--- gnome-applets-2.16.0.1/mixer/load.c.delay-gstreamer-initialization 2006-12-12 15:20:06.000000000 -0500
+++ gnome-applets-2.16.0.1/mixer/load.c 2006-12-12 15:29:08.000000000 -0500
@@ -25,7 +25,7 @@
#include <string.h>
-#include <glib/glist.h>
+#include <glib.h>
#ifdef HAVE_GST10
#include <gst/audio/mixerutils.h>
#else
@@ -293,21 +293,41 @@
#endif
static gboolean
-gnome_volume_applet_factory (PanelApplet *applet,
- const gchar *iid,
- gpointer data)
+gnome_volume_applet_toplevel_configure_handler (GtkWidget *widget,
+ GdkEventConfigure *event,
+ gpointer data)
{
GList *elements;
static gboolean init = FALSE;
+ g_signal_handlers_disconnect_by_func (widget,
+ gnome_volume_applet_toplevel_configure_handler,
+ data);
+
if (!init) {
gst_init (NULL, NULL);
init = TRUE;
}
elements = create_mixer_collection ();
- gnome_volume_applet_setup (GNOME_VOLUME_APPLET (applet), elements);
+ gnome_volume_applet_setup (GNOME_VOLUME_APPLET (data), elements);
+
+ return FALSE;
+}
+static gboolean
+gnome_volume_applet_factory (PanelApplet *applet,
+ const gchar *iid,
+ gpointer data)
+{
+ /* we delay applet specific initialization until the applet
+ * is fully registered with the panel since gst_init() can block
+ * for longer than the service activation timeouts
+ */
+ g_signal_connect (gtk_widget_get_toplevel (GTK_WIDGET (applet)),
+ "configure-event",
+ G_CALLBACK (gnome_volume_applet_toplevel_configure_handler),
+ applet);
return TRUE;
}