mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
ladspa: Add Windows/OSX path support
This is to mimic LV2 and what is commonly documented over the web. We also completely track these directories when updating the cache now. Unlike LV2, the plugins are flat in the plugin directories, so no need for the recursive lookup. This also fixes support for Fedora and other architecture using lib64 as a libdir.
This commit is contained in:
parent
60079ef3d2
commit
43631c63ea
1 changed files with 56 additions and 13 deletions
|
@ -133,10 +133,24 @@ GST_DEBUG_CATEGORY (ladspa_debug);
|
|||
#define LADSPA_VERSION "1.0"
|
||||
#endif
|
||||
|
||||
#if defined (G_OS_WIN32)
|
||||
#define GST_LADSPA_ENVVARS "APPDATA/LADSPA:COMMONPROGRAMFILES/LADSPA"
|
||||
#define GST_LADSPA_DEFAULT_PATH ""
|
||||
#elif defined (HAVE_OSX)
|
||||
#define GST_LADSPA_ENVVARS "HOME/Library/Audio/Plug-Ins/LADSPA:HOME/.ladspa"
|
||||
#define GST_LADSPA_DEFAULT_PATH \
|
||||
"/usr/lib/ladspa" G_SEARCHPATH_SEPARATOR_S \
|
||||
"/usr/local/lib/ladspa" G_SEARCHPATH_SEPARATOR_S \
|
||||
LIBDIR "/ladspa"
|
||||
"/usr/local/lib/ladspa:/usr/lib/ladspa:/Library/Audio/Plug-Ins/LADSPA"
|
||||
#elif defined (G_OS_UNIX)
|
||||
#define GST_LADSPA_ENVVARS "HOME/.ladspa"
|
||||
#define GST_LADSPA_DEFAULT_PATH \
|
||||
"/usr/lib/ladspa:" \
|
||||
"/usr/lib64/ladspa:" \
|
||||
"/usr/local/lib/ladspa:" \
|
||||
"/usr/local/lib64/ladspa:" \
|
||||
LIBDIR "/ladspa"
|
||||
#else
|
||||
#error "Unsupported OS"
|
||||
#endif
|
||||
|
||||
GstStructure *ladspa_meta_all = NULL;
|
||||
|
||||
|
@ -315,8 +329,8 @@ ladspa_plugin_directory_search (GstPlugin * ladspa_plugin, const char *dir_name)
|
|||
static gboolean
|
||||
ladspa_plugin_path_search (GstPlugin * plugin)
|
||||
{
|
||||
const gchar *search_path;
|
||||
gchar *ladspa_path;
|
||||
const gchar *search_path, *path;
|
||||
GString *ladspa_path;
|
||||
gchar **paths;
|
||||
gint i, j, path_entries;
|
||||
gboolean res = FALSE, skip;
|
||||
|
@ -324,18 +338,47 @@ ladspa_plugin_path_search (GstPlugin * plugin)
|
|||
gchar *pos, *prefix, *rdf_path;
|
||||
#endif
|
||||
|
||||
ladspa_path = g_string_new (NULL);
|
||||
|
||||
search_path = g_getenv ("LADSPA_PATH");
|
||||
if (search_path) {
|
||||
ladspa_path =
|
||||
g_strdup_printf ("%s" G_SEARCHPATH_SEPARATOR_S GST_LADSPA_DEFAULT_PATH,
|
||||
search_path);
|
||||
g_string_append_printf (ladspa_path,
|
||||
"%s" G_SEARCHPATH_SEPARATOR_S GST_LADSPA_DEFAULT_PATH, search_path);
|
||||
} else {
|
||||
ladspa_path = g_strdup (GST_LADSPA_DEFAULT_PATH);
|
||||
g_string_append_printf (ladspa_path, GST_LADSPA_DEFAULT_PATH);
|
||||
}
|
||||
|
||||
paths = g_strsplit (ladspa_path, G_SEARCHPATH_SEPARATOR_S, 0);
|
||||
#ifdef G_OS_WIN32
|
||||
path = g_getenv ("APPDATA");
|
||||
if (path)
|
||||
g_string_append (path, search_path);
|
||||
|
||||
path = g_getenv ("COMMONPROGRAMFILES");
|
||||
if (path) {
|
||||
if (ladspa_path->len)
|
||||
g_string_append_printf (ladspa_path, G_SEARCHPATH_SEPARATOR_S "%s", path);
|
||||
else
|
||||
g_string_append (ladspa_path, path);
|
||||
}
|
||||
#else
|
||||
path = g_getenv ("HOME");
|
||||
|
||||
if (path) {
|
||||
if (ladspa_path->len)
|
||||
g_string_append_printf (ladspa_path, ":%s/.ladspa", path);
|
||||
else
|
||||
g_string_append_printf (ladspa_path, "%s/.ladspa", path);
|
||||
|
||||
#if defined (HAVE_IOS) || defined (HAVE_OSX)
|
||||
g_string_append_printf (ladspa_path, ":%s/Library/Audio/Plug-Ins/LADSPA",
|
||||
path);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
paths = g_strsplit (ladspa_path->str, G_SEARCHPATH_SEPARATOR_S, 0);
|
||||
path_entries = g_strv_length (paths);
|
||||
GST_INFO ("%d dirs in search paths \"%s\"", path_entries, ladspa_path);
|
||||
GST_INFO ("%d dirs in search paths \"%s\"", path_entries, ladspa_path->str);
|
||||
|
||||
#ifdef HAVE_LRDF
|
||||
for (i = 0; i < path_entries; i++) {
|
||||
|
@ -376,7 +419,7 @@ ladspa_plugin_path_search (GstPlugin * plugin)
|
|||
}
|
||||
g_strfreev (paths);
|
||||
|
||||
g_free (ladspa_path);
|
||||
g_string_free (ladspa_path, TRUE);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
@ -397,7 +440,7 @@ plugin_init (GstPlugin * plugin)
|
|||
#endif
|
||||
|
||||
gst_plugin_add_dependency_simple (plugin,
|
||||
"LADSPA_PATH",
|
||||
"LADSPA_PATH:" GST_LADSPA_ENVVARS,
|
||||
GST_LADSPA_DEFAULT_PATH, NULL, GST_PLUGIN_DEPENDENCY_FLAG_NONE);
|
||||
|
||||
#ifdef HAVE_LRDF
|
||||
|
|
Loading…
Reference in a new issue