Author: jannis Date: 2008-09-01 13:28:58 +0000 (Mon, 01 Sep 2008) New Revision: 27639
Modified: xfce4-mixer/trunk/ChangeLog xfce4-mixer/trunk/libxfce4mixer/xfce-mixer-card.c xfce4-mixer/trunk/libxfce4mixer/xfce-mixer-card.h xfce4-mixer/trunk/xfce4-mixer/xfce-mixer.c Log: * libxfce4mixer/xfce-mixer-card.{c,h}: Add new method xfce_mixer_card_disconnect() and return the signal handler ID from xfce_mixer_card_connect(). * xfce4-mixer/xfce-mixer.c: Disconnect from the XfceMixeCard in xfce_mixer_finalize(). This way there will be no GstBus messages sent to finalized XfceMixer objects any more. Fixes a bug on first startup. Modified: xfce4-mixer/trunk/ChangeLog =================================================================== --- xfce4-mixer/trunk/ChangeLog 2008-09-01 12:12:51 UTC (rev 27638) +++ xfce4-mixer/trunk/ChangeLog 2008-09-01 13:28:58 UTC (rev 27639) @@ -1,5 +1,15 @@ 2008-09-01 Jannis Pohlmann <[EMAIL PROTECTED]> + * libxfce4mixer/xfce-mixer-card.{c,h}: Add new method + xfce_mixer_card_disconnect() and return the signal handler ID from + xfce_mixer_card_connect(). + * xfce4-mixer/xfce-mixer.c: Disconnect from the XfceMixeCard in + xfce_mixer_finalize(). This way there will be no GstBus messages + sent to finalized XfceMixer objects any more. Fixes a bug on first + startup. + +2008-09-01 Jannis Pohlmann <[EMAIL PROTECTED]> + * xfce4-mixer/xfce-mixer.c: Add g_return_val_if_fail() call to xfce_mixer_bus_message() in order to return when an invalid mixer object is passed to the function. Modified: xfce4-mixer/trunk/libxfce4mixer/xfce-mixer-card.c =================================================================== --- xfce4-mixer/trunk/libxfce4mixer/xfce-mixer-card.c 2008-09-01 12:12:51 UTC (rev 27638) +++ xfce4-mixer/trunk/libxfce4mixer/xfce-mixer-card.c 2008-09-01 13:28:58 UTC (rev 27639) @@ -352,7 +352,7 @@ #ifdef HAVE_GST_MIXER_NOTIFICATION -void +gint xfce_mixer_card_connect (XfceMixerCard *card, GCallback callback_func, gpointer user_data) @@ -366,11 +366,23 @@ gst_element_set_bus (card->element, card->bus); } - g_signal_connect (G_OBJECT (card->bus), "message::element", callback_func, user_data); + return g_signal_connect (G_OBJECT (card->bus), "message::element", callback_func, user_data); } +void +xfce_mixer_card_disconnect (XfceMixerCard *card, + gint handler_id) +{ + g_return_if_fail (IS_XFCE_MIXER_CARD (card)); + + if (G_LIKELY (card->bus != NULL)) + g_signal_handler_disconnect (card->bus, handler_id); +} + + + gboolean xfce_mixer_card_get_message_owner (XfceMixerCard *card, GstMessage *message) Modified: xfce4-mixer/trunk/libxfce4mixer/xfce-mixer-card.h =================================================================== --- xfce4-mixer/trunk/libxfce4mixer/xfce-mixer-card.h 2008-09-01 12:12:51 UTC (rev 27638) +++ xfce4-mixer/trunk/libxfce4mixer/xfce-mixer-card.h 2008-09-01 13:28:58 UTC (rev 27639) @@ -68,9 +68,11 @@ GstMixerTrack *track, gchar *option); #ifdef HAVE_GST_MIXER_NOTIFICATION -void xfce_mixer_card_connect (XfceMixerCard *card, +gint xfce_mixer_card_connect (XfceMixerCard *card, GCallback callback_func, gpointer user_data); +void xfce_mixer_card_disconnect (XfceMixerCard *card, + gint handler_id); gboolean xfce_mixer_card_get_message_owner (XfceMixerCard *card, GstMessage *message); #endif Modified: xfce4-mixer/trunk/xfce4-mixer/xfce-mixer.c =================================================================== --- xfce4-mixer/trunk/xfce4-mixer/xfce-mixer.c 2008-09-01 12:12:51 UTC (rev 27638) +++ xfce4-mixer/trunk/xfce4-mixer/xfce-mixer.c 2008-09-01 13:28:58 UTC (rev 27639) @@ -62,6 +62,10 @@ XfceMixerCard *card; +#ifdef HAVE_GST_MIXER_NOTIFICATION + gint bus_connection_id; +#endif + GHashTable *widgets; }; @@ -119,6 +123,7 @@ xfce_mixer_init (XfceMixer *mixer) { mixer->widgets = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL); + mixer->bus_connection_id = 0; } @@ -136,6 +141,10 @@ { XfceMixer *mixer = XFCE_MIXER (object); +#ifdef HAVE_GST_MIXER_NOTIFICATION + xfce_mixer_card_disconnect (mixer->card, mixer->bus_connection_id); +#endif + g_object_unref (G_OBJECT (mixer->card)); g_hash_table_unref (mixer->widgets); @@ -321,7 +330,7 @@ } #ifdef HAVE_GST_MIXER_NOTIFICATION - xfce_mixer_card_connect (mixer->card, G_CALLBACK (xfce_mixer_bus_message), mixer); + mixer->bus_connection_id = xfce_mixer_card_connect (mixer->card, G_CALLBACK (xfce_mixer_bus_message), mixer); #endif } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits