Commit 159cf687 authored by Jan Schmidt's avatar Jan Schmidt Committed by Tim-Philipp Müller
Browse files

pluginloader: make sure gst-plugin-scanner is called with the right arch on OSX

On OSX, GStreamer might be built as a 'fat/universal' binary containing
both 32-bit and 64-bit code. We must take care that gst-plugin-scanner
is executed with the same architecture as the GStreamer core, otherwise
bad things may happen and core/scanner will not be able to communicate

Should fix issues with (32-bit) firefox using a 32-bit GStreamer core
which then spawns a 'universal' gst-plugin-scanner binary which gets
run in 64-bit mode, causing 100% cpu usage / busy loops or just hanging
firefox until killed.
parent fd5aa095
...@@ -353,9 +353,28 @@ plugin_loader_create_blacklist_plugin (GstPluginLoader * l, ...@@ -353,9 +353,28 @@ plugin_loader_create_blacklist_plugin (GstPluginLoader * l,
static gboolean static gboolean
gst_plugin_loader_try_helper (GstPluginLoader * loader, gchar * location) gst_plugin_loader_try_helper (GstPluginLoader * loader, gchar * location)
{ {
#ifdef __APPLE__
#if defined(__x86_64__)
char *argv[] = { "/usr/bin/arch", "-x86_64", location, (char *) "-l", NULL };
#elif defined(__i386__)
char *argv[] = { "/usr/bin/arch", "-i386", location, (char *) "-l", NULL };
#elif defined(__ppc__)
char *argv[] = { "/usr/bin/arch", "-ppc", location, (char *) "-l", NULL };
#elif defined(__ppc64__)
char *argv[] = { "/usr/bin/arch", "-ppc64", location, (char *) "-l", NULL };
#else /* ! __APPLE__ */
char *argv[] = { location, (char *) "-l", NULL }; char *argv[] = { location, (char *) "-l", NULL };
#ifdef __APPLE__
GST_LOG ("Trying to spawn gst-plugin-scanner helper at %s with arch %s",
location, argv[1]);
GST_LOG ("Trying to spawn gst-plugin-scanner helper at %s", location); GST_LOG ("Trying to spawn gst-plugin-scanner helper at %s", location);
if (!g_spawn_async_with_pipes (NULL, argv, NULL, if (!g_spawn_async_with_pipes (NULL, argv, NULL,
NULL, NULL, &loader->child_pid, &loader->fd_w.fd, &loader->fd_r.fd, NULL, NULL, &loader->child_pid, &loader->fd_w.fd, &loader->fd_r.fd,
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment