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.
This commit is contained in:
Tim-Philipp Müller 2015-02-17 20:47:23 +00:00
parent 4a757e651a
commit 10f038d4fb

View file

@ -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;
}