summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2020-04-09 21:50:01 +0200
committerRobin Gareus <robin@gareus.org>2020-04-09 21:50:01 +0200
commitbe023ef32d9eb2ed7cb0efcdc7b49d31c9576738 (patch)
tree111adbdd3e9df4e8f12a5be8c105d19588354209
parent61692ae1f8de1b40100bffb650e2112274a7bab5 (diff)
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.
-rw-r--r--libs/surfaces/websockets/resources.cc29
-rw-r--r--libs/surfaces/websockets/resources.h1
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);