amc: Fix crash when a sync_meta survives its sink
authorXavier Claessens <xavier.claessens@collabora.com>
Wed, 14 Aug 2019 15:21:30 +0000 (11:21 -0400)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 14 Aug 2019 21:39:34 +0000 (22:39 +0100)
_amc_gl_free() could be called after the GstAmcVideoDec has been
finalized, in the case downstream still has a ref to a buffer.

sys/androidmedia/gstamcvideodec.c

index 1681650..6ca6dd2 100644 (file)
@@ -153,6 +153,7 @@ _gl_sync_unref (struct gl_sync *sync)
 
     _gl_sync_result_unref (sync->result);
 
+    g_object_unref (sync->sink);
     g_object_unref (sync->surface);
     gst_memory_unref ((GstMemory *) sync->oes_mem);
 
@@ -1464,7 +1465,7 @@ retry:
 
     sync = g_new0 (struct gl_sync, 1);
     sync->refcount = 1;
-    sync->sink = self;
+    sync->sink = g_object_ref (self);
     sync->buffer = outbuf;
     sync->surface = g_object_ref (self->surface);
     sync->oes_mem =