gboolean _gst_plugin_loader_client_run (void);
+G_GNUC_INTERNAL GstPlugin * _priv_gst_plugin_load_file_for_registry (const gchar *filename,
+ GstRegistry * registry,
+ GError** error);
+
/* Used in GstBin for manual state handling */
G_GNUC_INTERNAL void _priv_gst_element_state_changed (GstElement *element,
GstState oldstate, GstState newstate, GstState pending);
GstPlugin *
gst_plugin_load_file (const gchar * filename, GError ** error)
{
+ return _priv_gst_plugin_load_file_for_registry (filename, NULL, error);
+}
+
+GstPlugin *
+_priv_gst_plugin_load_file_for_registry (const gchar * filename,
+ GstRegistry * registry, GError ** error)
+{
GstPluginDesc *desc;
GstPlugin *plugin;
GModule *module;
gboolean ret;
gpointer ptr;
GStatBuf file_status;
- GstRegistry *registry;
gboolean new_plugin = TRUE;
GModuleFlags flags;
g_return_val_if_fail (filename != NULL, NULL);
- registry = gst_registry_get ();
+ if (registry == NULL)
+ registry = gst_registry_get ();
+
g_mutex_lock (&gst_plugin_loading_mutex);
plugin = gst_registry_lookup (registry, filename);
if (new_plugin) {
gst_object_ref (plugin);
- gst_registry_add_plugin (gst_registry_get (), plugin);
+ gst_registry_add_plugin (registry, plugin);
}
g_mutex_unlock (&gst_plugin_loading_mutex);
/* We don't use a GError here because a failure to load some shared
* objects as plugins is normal (particularly in the uninstalled case)
*/
- newplugin = gst_plugin_load_file (filename, NULL);
+ newplugin = _priv_gst_plugin_load_file_for_registry (filename,
+ context->registry, NULL);
}
if (newplugin) {