From: Sebastian Dröge Date: Tue, 23 Jul 2013 10:35:46 +0000 (+0200) Subject: playsink: Fix handling of colorbalance element if the sink does not implement it X-Git-Tag: 1.19.3~511^2~5165 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=94fc577dd57334b5889638cee26062806cc27d3f;p=platform%2Fupstream%2Fgstreamer.git playsink: Fix handling of colorbalance element if the sink does not implement it --- diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c index 880b02f..92f244d 100644 --- a/gst/playback/gstplaysink.c +++ b/gst/playback/gstplaysink.c @@ -1713,6 +1713,7 @@ gen_video_chain (GstPlaySink * playsink, gboolean raw, gboolean async) g_signal_handler_disconnect (playsink->colorbalance_element, playsink->colorbalance_value_changed_id); gst_object_unref (playsink->colorbalance_element); + playsink->colorbalance_value_changed_id = 0; } playsink->colorbalance_element = find_color_balance_element (chain->sink); if (playsink->colorbalance_element) { @@ -1907,6 +1908,7 @@ setup_video_chain (GstPlaySink * playsink, gboolean raw, gboolean async) if (playsink->colorbalance_element) { g_signal_handler_disconnect (playsink->colorbalance_element, playsink->colorbalance_value_changed_id); + playsink->colorbalance_value_changed_id = 0; gst_object_unref (playsink->colorbalance_element); } playsink->colorbalance_element = find_color_balance_element (chain->sink); @@ -1924,10 +1926,14 @@ setup_video_chain (GstPlaySink * playsink, gboolean raw, gboolean async) g_object_set (chain->conv, "use-balance", use_balance, NULL); GST_OBJECT_LOCK (playsink); - if (use_balance && GST_PLAY_SINK_VIDEO_CONVERT (chain->conv)->balance) + if (use_balance && GST_PLAY_SINK_VIDEO_CONVERT (chain->conv)->balance) { playsink->colorbalance_element = GST_COLOR_BALANCE (gst_object_ref (GST_PLAY_SINK_VIDEO_CONVERT (chain->conv)->balance)); + playsink->colorbalance_value_changed_id = + g_signal_connect (playsink->colorbalance_element, "value-changed", + G_CALLBACK (colorbalance_value_changed_cb), playsink); + } GST_OBJECT_UNLOCK (playsink); } @@ -3046,6 +3052,7 @@ gst_play_sink_do_reconfigure (GstPlaySink * playsink) if (playsink->colorbalance_element) { g_signal_handler_disconnect (playsink->colorbalance_element, playsink->colorbalance_value_changed_id); + playsink->colorbalance_value_changed_id = 0; gst_object_unref (playsink->colorbalance_element); } playsink->colorbalance_element = NULL; @@ -3180,6 +3187,7 @@ gst_play_sink_do_reconfigure (GstPlaySink * playsink) if (playsink->colorbalance_element) { g_signal_handler_disconnect (playsink->colorbalance_element, playsink->colorbalance_value_changed_id); + playsink->colorbalance_value_changed_id = 0; gst_object_unref (playsink->colorbalance_element); } playsink->colorbalance_element = NULL; @@ -4453,6 +4461,7 @@ gst_play_sink_change_state (GstElement * element, GstStateChange transition) if (playsink->colorbalance_element) { g_signal_handler_disconnect (playsink->colorbalance_element, playsink->colorbalance_value_changed_id); + playsink->colorbalance_value_changed_id = 0; gst_object_unref (playsink->colorbalance_element); } playsink->colorbalance_element = NULL;