--- 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 -#include +#include #ifdef HAVE_GST10 #include #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; }