From be023ef32d9eb2ed7cb0efcdc7b49d31c9576738 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 9 Apr 2020 21:50:01 +0200 Subject: [PATCH] Tweak websocket surface for use src-tree shared dir When running from the src-tree, ardev_common.sh sets multiple data-paths, to allow running ./ardev ./gtk2_ardour/ardev. Pick the first one that contains a "web_surfaces" subfolder as docroot. --- libs/surfaces/websockets/resources.cc | 29 +++++++++------------------ libs/surfaces/websockets/resources.h | 1 - 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/libs/surfaces/websockets/resources.cc b/libs/surfaces/websockets/resources.cc index 1bb8cd1eb1..5ad28cd343 100644 --- a/libs/surfaces/websockets/resources.cc +++ b/libs/surfaces/websockets/resources.cc @@ -116,33 +116,22 @@ ServerResources::server_data_dir () std::string env_dir (Glib::getenv (data_dir_env_var, defined)); if (defined) { - // useful for development + /* useful for development */ data_dir = env_dir; } else { - data_dir = Glib::build_filename (ardour_data_dir (), data_dir_name); + /* use reverse iterator, since ardour_data_search_path() prefixes the user-data dir */ + PBD::Searchpath s (ARDOUR::ardour_data_search_path ()); + for (PBD::Searchpath::reverse_iterator i = s.rbegin (); i != s.rend(); ++i) { + data_dir = Glib::build_filename (*i, data_dir_name); + if (Glib::file_test(data_dir, Glib::FILE_TEST_EXISTS | Glib::FILE_TEST_IS_DIR)) { + break; + } + } } return data_dir; } -std::string -ServerResources::ardour_data_dir () -{ - std::string data_dir; - -#ifdef PLATFORM_WINDOWS - // windows_search_path() returns a Searchpath with a single item - data_dir = ARDOUR::windows_search_path ().to_string (); -#else - data_dir = Glib::getenv ("ARDOUR_DATA_PATH"); - if (data_dir.empty()) { - std::cerr << "ARDOUR_CONFIG_PATH not set in environment" << std::endl; - } -#endif - - return data_dir; -} - SurfaceManifestVector ServerResources::read_manifests (std::string dir) { diff --git a/libs/surfaces/websockets/resources.h b/libs/surfaces/websockets/resources.h index b7bb0daee9..f942ec1ce7 100644 --- a/libs/surfaces/websockets/resources.h +++ b/libs/surfaces/websockets/resources.h @@ -44,7 +44,6 @@ private: std::string _user_dir; std::string server_data_dir (); - std::string ardour_data_dir (); SurfaceManifestVector read_manifests (std::string);