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