summaryrefslogtreecommitdiff
path: root/gst/gstregistry.c
diff options
context:
space:
mode:
authorJan Schmidt <thaytan@noraisin.net>2009-01-23 15:47:08 +0000
committerJan Schmidt <thaytan@noraisin.net>2009-10-06 19:51:42 +0100
commit38083fb0c80b246145bf94734b60789a009e1aeb (patch)
tree6671fc1e84445ea65dd2ec3a480bedcdaa50bf56 /gst/gstregistry.c
parent51675e0c2a1bcf0263e45a74ab0da081469b3236 (diff)
Plugin loader phase 2
phase 2 - make the plugin loader receive the list of plugins to load and send back the results asynchronously, so we don't context switch back and forth so much.
Diffstat (limited to 'gst/gstregistry.c')
-rw-r--r--gst/gstregistry.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gst/gstregistry.c b/gst/gstregistry.c
index b179fa582e..591e798fcb 100644
--- a/gst/gstregistry.c
+++ b/gst/gstregistry.c
@@ -878,7 +878,7 @@ clear_scan_context (GstRegistryScanContext * context)
static gboolean
gst_registry_scan_plugin_file (GstRegistryScanContext * context,
- const gchar * filename)
+ const gchar * filename, off_t file_size, time_t file_mtime)
{
gboolean changed = FALSE;
GstPlugin *newplugin = NULL;
@@ -895,7 +895,8 @@ gst_registry_scan_plugin_file (GstRegistryScanContext * context,
if (context->helper_state == REGISTRY_SCAN_HELPER_RUNNING) {
GST_DEBUG ("Using scan-helper to load plugin %s", filename);
- if (!_priv_gst_plugin_loader_funcs.load (context->helper, filename)) {
+ if (!_priv_gst_plugin_loader_funcs.load (context->helper,
+ filename, file_size, file_mtime)) {
g_warning ("External plugin loader failed...");
context->helper_state = REGISTRY_SCAN_HELPER_DISABLED;
}
@@ -1027,14 +1028,16 @@ gst_registry_scan_path_level (GstRegistryScanContext * context,
(gint64) plugin->file_size, (gint64) file_status.st_size,
env_vars_changed, deps_changed);
gst_registry_remove_plugin (context->registry, plugin);
- changed |= gst_registry_scan_plugin_file (context, filename);
+ changed |= gst_registry_scan_plugin_file (context, filename,
+ file_status.st_size, file_status.st_mtime);
}
gst_object_unref (plugin);
} else {
GST_DEBUG_OBJECT (context->registry, "file %s not yet in registry",
filename);
- changed |= gst_registry_scan_plugin_file (context, filename);
+ changed |= gst_registry_scan_plugin_file (context, filename,
+ file_status.st_size, file_status.st_mtime);
}
g_free (filename);