From 10f038d4fbe50cb5348107a51806dda3412c1ace Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Tue, 17 Feb 2015 20:47:23 +0000 Subject: [PATCH] message: revive async delivery message before bus thread can run unref Revive message in dispose handler before we signal the bus thread, otherwise the bus thread might be woken up and unref the message before we had a chance to revive it yet. --- gst/gstmessage.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gst/gstmessage.c b/gst/gstmessage.c index 9f4d286..51282b9 100644 --- a/gst/gstmessage.c +++ b/gst/gstmessage.c @@ -172,6 +172,9 @@ _gst_message_dispose (GstMessage * message) gboolean do_free = TRUE; if (GST_MINI_OBJECT_FLAG_IS_SET (message, GST_MESSAGE_FLAG_ASYNC_DELIVERY)) { + /* revive message, so bus can finish with it and clean it up */ + gst_message_ref (message); + GST_INFO ("[msg %p] signalling async free", message); GST_MESSAGE_LOCK (message); @@ -179,7 +182,6 @@ _gst_message_dispose (GstMessage * message) GST_MESSAGE_UNLOCK (message); /* don't free it yet, let bus finish with it first */ - gst_message_ref (message); do_free = FALSE; } -- 2.7.4