pulsesink: fix racy shutdown
authorStefan Kost <ensonic@users.sf.net>
Sat, 3 Apr 2010 20:39:20 +0000 (23:39 +0300)
committerWim Taymans <wim.taymans@collabora.co.uk>
Tue, 6 Apr 2010 15:22:03 +0000 (17:22 +0200)
Keep a ref of pulsesink for deferred mainloop invocation. Fixes #614765

ext/pulse/pulsesink.c

index 1fc221d..0460748 100644 (file)
@@ -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);