glmixer: Only finalize the other context in finalize()
authorSebastian Dröge <sebastian@centricular.com>
Mon, 13 Oct 2014 11:27:11 +0000 (13:27 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:31:48 +0000 (19:31 +0000)
Otherwise we change a value of a property when going to READY state,
which is unexpected behaviour.

ext/gl/gstglmixer.c

index 0095437..5857410 100644 (file)
@@ -463,7 +463,13 @@ gst_gl_mixer_init (GstGLMixer * mix)
 static void
 gst_gl_mixer_finalize (GObject * object)
 {
-  GstGLMixerPrivate *priv = GST_GL_MIXER (object)->priv;
+  GstGLMixer *mix = GST_GL_MIXER (object);
+  GstGLMixerPrivate *priv = mix->priv;
+
+  if (mix->other_context) {
+    gst_object_unref (mix->other_context);
+    mix->other_context = NULL;
+  }
 
   g_mutex_clear (&priv->gl_resource_lock);
   g_cond_clear (&priv->gl_resource_cond);
@@ -1142,11 +1148,6 @@ gst_gl_mixer_stop (GstAggregator * agg)
     mix->context = NULL;
   }
 
-  if (mix->other_context) {
-    gst_object_unref (mix->other_context);
-    mix->other_context = NULL;
-  }
-
   gst_gl_mixer_reset (mix);
 
   return TRUE;