From 7cf9967e0b65fcf264487344dadfdacf33778ad3 Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Sat, 3 Apr 2010 23:39:20 +0300 Subject: [PATCH] pulsesink: fix racy shutdown Keep a ref of pulsesink for deferred mainloop invocation. Fixes #614765 --- ext/pulse/pulsesink.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ext/pulse/pulsesink.c b/ext/pulse/pulsesink.c index 1fc221ddc8..04607480ca 100644 --- a/ext/pulse/pulsesink.c +++ b/ext/pulse/pulsesink.c @@ -1025,6 +1025,7 @@ mainloop_leave_defer_cb (pa_mainloop_api * api, void *userdata) pulsesink->pa_defer_ran = TRUE; pa_threaded_mainloop_signal (pulsesink->mainloop, 0); + gst_object_unref (pulsesink); } /* stop playback, we flush everything. */ @@ -1071,6 +1072,7 @@ cleanup: GST_DEBUG_OBJECT (psink, "scheduling stream status"); psink->pa_defer_ran = FALSE; + gst_object_ref (psink); pa_mainloop_api_once (pa_threaded_mainloop_get_api (psink->mainloop), mainloop_leave_defer_cb, psink);