From 97e14fda285299068c6fce843629b586db1330f3 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Wed, 23 Jun 2010 10:16:07 +0200 Subject: [PATCH] playsink: Reset ts_offset field when freeing chain Otherwise we would end up with a bogus ->audiochain->ts_offset field which would cause segfaults/assertions when trying to modify the 'ts-offset' property in update_av_offset(). Was easy to trigger when using a list of audio+video files mixed with video-only files in totem. --- gst/playback/gstplaysink.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c index 6b9873f59d..ef11ec4ee7 100644 --- a/gst/playback/gstplaysink.c +++ b/gst/playback/gstplaysink.c @@ -2219,6 +2219,7 @@ gst_play_sink_reconfigure (GstPlaySink * playsink) disconnect_chain (playsink->audiochain, playsink); playsink->audiochain->volume = NULL; playsink->audiochain->mute = NULL; + playsink->audiochain->ts_offset = NULL; free_chain ((GstPlayChain *) playsink->audiochain); playsink->audiochain = NULL; playsink->volume_changed = playsink->mute_changed = FALSE; @@ -2256,6 +2257,7 @@ gst_play_sink_reconfigure (GstPlaySink * playsink) disconnect_chain (playsink->audiochain, playsink); playsink->audiochain->volume = NULL; playsink->audiochain->mute = NULL; + playsink->audiochain->ts_offset = NULL; } add_chain (GST_PLAY_CHAIN (playsink->audiochain), FALSE); activate_chain (GST_PLAY_CHAIN (playsink->audiochain), FALSE); @@ -2941,6 +2943,7 @@ gst_play_sink_change_state (GstElement * element, GstStateChange transition) disconnect_chain (playsink->audiochain, playsink); playsink->audiochain->volume = NULL; playsink->audiochain->mute = NULL; + playsink->audiochain->ts_offset = NULL; } ret = GST_STATE_CHANGE_SUCCESS; break;