From e69ba0f94f475975cfa33d651a56fc1567c0238b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 6 May 2010 13:57:01 +0200 Subject: [PATCH] pulsesink: Allocate and free the custom clock in NULL<->READY --- ext/pulse/pulsesink.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/ext/pulse/pulsesink.c b/ext/pulse/pulsesink.c index 4b45a2f..e39b672 100644 --- a/ext/pulse/pulsesink.c +++ b/ext/pulse/pulsesink.c @@ -1664,13 +1664,6 @@ gst_pulsesink_init (GstPulseSink * pulsesink, GstPulseSinkClass * klass) pulsesink->probe = gst_pulseprobe_new (G_OBJECT (pulsesink), G_OBJECT_GET_CLASS (pulsesink), PROP_DEVICE, pulsesink->device, TRUE, FALSE); - - /* override with a custom clock */ - if (GST_BASE_AUDIO_SINK (pulsesink)->provided_clock) - gst_object_unref (GST_BASE_AUDIO_SINK (pulsesink)->provided_clock); - GST_BASE_AUDIO_SINK (pulsesink)->provided_clock = - gst_audio_clock_new ("GstPulseSinkClock", - (GstAudioClockGetTimeFunc) gst_pulsesink_get_time, pulsesink); } static void @@ -2275,6 +2268,13 @@ gst_pulsesink_change_state (GstElement * element, GstStateChange transition) g_assert (pulsesink->mainloop != NULL); res = pa_threaded_mainloop_start (pulsesink->mainloop); g_assert (res == 0); + + /* override with a custom clock */ + if (GST_BASE_AUDIO_SINK (pulsesink)->provided_clock) + gst_object_unref (GST_BASE_AUDIO_SINK (pulsesink)->provided_clock); + GST_BASE_AUDIO_SINK (pulsesink)->provided_clock = + gst_audio_clock_new ("GstPulseSinkClock", + (GstAudioClockGetTimeFunc) gst_pulsesink_get_time, pulsesink); break; default: break; @@ -2284,6 +2284,9 @@ gst_pulsesink_change_state (GstElement * element, GstStateChange transition) switch (transition) { case GST_STATE_CHANGE_READY_TO_NULL: + if (GST_BASE_AUDIO_SINK (pulsesink)->provided_clock) + gst_object_unref (GST_BASE_AUDIO_SINK (pulsesink)->provided_clock); + GST_BASE_AUDIO_SINK (pulsesink)->provided_clock = NULL; if (pulsesink->mainloop) { pa_threaded_mainloop_stop (pulsesink->mainloop); pa_threaded_mainloop_free (pulsesink->mainloop); -- 2.7.4