mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 11:41:09 +00:00
gst-plugin-scanner: Add support for Windows
Adding Win32 specific plugin loader implementation. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/11 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3512>
This commit is contained in:
parent
d071ea714d
commit
621feb32e9
6 changed files with 1205 additions and 13 deletions
|
@ -154,7 +154,7 @@ gboolean _priv_gst_registry_remove_cache_plugins (GstRegistry *registry);
|
|||
G_GNUC_INTERNAL void _priv_gst_registry_cleanup (void);
|
||||
|
||||
GST_API
|
||||
gboolean _gst_plugin_loader_client_run (void);
|
||||
gboolean _gst_plugin_loader_client_run (const gchar * pipe_name);
|
||||
|
||||
G_GNUC_INTERNAL GstPlugin * _priv_gst_plugin_load_file_for_registry (const gchar *filename,
|
||||
GstRegistry * registry,
|
||||
|
|
1178
subprojects/gstreamer/gst/gstpluginloader-win32.c
Normal file
1178
subprojects/gstreamer/gst/gstpluginloader-win32.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -644,7 +644,7 @@ plugin_loader_cleanup_child (GstPluginLoader * l)
|
|||
}
|
||||
|
||||
gboolean
|
||||
_gst_plugin_loader_client_run (void)
|
||||
_gst_plugin_loader_client_run (const gchar * pipe_name)
|
||||
{
|
||||
gboolean res = TRUE;
|
||||
GstPluginLoader *l;
|
||||
|
|
|
@ -1154,12 +1154,6 @@ gst_registry_scan_plugin_file (GstRegistryScanContext * context,
|
|||
gboolean changed = FALSE;
|
||||
GstPlugin *newplugin = NULL;
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* Disable external plugin loader on Windows until it is ported properly. */
|
||||
context->helper_state = REGISTRY_SCAN_HELPER_DISABLED;
|
||||
#endif
|
||||
|
||||
|
||||
/* Have a plugin to load - see if the scan-helper needs starting */
|
||||
if (context->helper_state == REGISTRY_SCAN_HELPER_NOT_STARTED) {
|
||||
GST_DEBUG ("Starting plugin scanner for file %s", filename);
|
||||
|
|
|
@ -40,7 +40,6 @@ gst_sources = files(
|
|||
'gstpipeline.c',
|
||||
'gstplugin.c',
|
||||
'gstpluginfeature.c',
|
||||
'gstpluginloader.c',
|
||||
'gstpoll.c',
|
||||
'gstpreset.c',
|
||||
'gstprotection.c',
|
||||
|
@ -155,6 +154,13 @@ endif
|
|||
|
||||
install_headers(gst_headers, subdir : 'gstreamer-1.0/gst')
|
||||
|
||||
# Some Win32 APIs are not allowed for UWP
|
||||
if host_system == 'windows' and not building_for_uwp
|
||||
gst_sources += files('gstpluginloader-win32.c')
|
||||
else
|
||||
gst_sources += files('gstpluginloader.c')
|
||||
endif
|
||||
|
||||
extra_deps = []
|
||||
if host_system == 'android'
|
||||
gst_sources += 'gstandroid.c'
|
||||
|
|
|
@ -37,11 +37,28 @@ main (int argc, char *argv[])
|
|||
gboolean res;
|
||||
char **my_argv;
|
||||
int my_argc;
|
||||
char *pipe_name = NULL;
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
/* On Windows, we need pipe name
|
||||
* arg0: exe path
|
||||
* arg1: -l
|
||||
* arg2: parent process exe path
|
||||
* arg3: pipe name */
|
||||
if (argc != 4)
|
||||
return 1;
|
||||
|
||||
_gst_executable_path = g_strdup (argv[2]);
|
||||
pipe_name = argv[3];
|
||||
#else
|
||||
/* We may or may not have an executable path */
|
||||
if (argc != 2 && argc != 3)
|
||||
return 1;
|
||||
|
||||
if (argc == 3)
|
||||
_gst_executable_path = g_strdup (argv[2]);
|
||||
#endif
|
||||
|
||||
if (strcmp (argv[1], "-l"))
|
||||
return 1;
|
||||
|
||||
|
@ -54,9 +71,6 @@ main (int argc, char *argv[])
|
|||
_gst_disable_registry_cache = TRUE;
|
||||
#endif
|
||||
|
||||
if (argc == 3)
|
||||
_gst_executable_path = g_strdup (argv[2]);
|
||||
|
||||
res = gst_init_check (&my_argc, &my_argv, NULL);
|
||||
|
||||
g_free (my_argv);
|
||||
|
@ -64,7 +78,7 @@ main (int argc, char *argv[])
|
|||
return 1;
|
||||
|
||||
/* Create registry scanner listener and run */
|
||||
if (!_gst_plugin_loader_client_run ())
|
||||
if (!_gst_plugin_loader_client_run (pipe_name))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue