playsink: Don't leak the videochain ts-offset element
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 5 Sep 2011 10:02:23 +0000 (12:02 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 5 Sep 2011 10:02:37 +0000 (12:02 +0200)
Also don't leak the audiochain ts-offset element if one is
found but the sink doesn't support volume settings.

gst/playback/gstplaysink.c

index 4a6f038..90c71eb 100644 (file)
@@ -3444,10 +3444,17 @@ gst_play_sink_change_state (GstElement * element, GstStateChange transition)
         disconnect_chain (playsink->audiochain, playsink);
         playsink->audiochain->volume = NULL;
         playsink->audiochain->mute = NULL;
-        if (playsink->audiochain->ts_offset)
-          gst_object_unref (playsink->audiochain->ts_offset);
+      }
+
+      if (playsink->audiochain && playsink->audiochain->ts_offset) {
+        gst_object_unref (playsink->audiochain->ts_offset);
         playsink->audiochain->ts_offset = NULL;
       }
+
+      if (playsink->videochain && playsink->videochain->ts_offset) {
+        gst_object_unref (playsink->videochain->ts_offset);
+        playsink->videochain->ts_offset = NULL;
+      }
       ret = GST_STATE_CHANGE_SUCCESS;
       break;
     default: