diff --git a/gst-libs/gst/gl/gstglmixer.c b/gst-libs/gst/gl/gstglmixer.c index f43a6498b1..a206e1ac1e 100644 --- a/gst-libs/gst/gl/gstglmixer.c +++ b/gst-libs/gst/gl/gstglmixer.c @@ -1274,10 +1274,8 @@ gst_gl_mixer_change_state (GstElement * element, GstStateChange transition) while (walk) { GstGLMixerPad *sink_pad = GST_GL_MIXER_PAD (walk->data); walk = g_slist_next (walk); - if (sink_pad->display) { - g_object_unref (sink_pad->display); - sink_pad->display = NULL; - } + if (sink_pad->display) + gst_gl_display_activate_gl_context (sink_pad->display, FALSE); } if (mixer_class->reset) mixer_class->reset (mix); @@ -1290,6 +1288,15 @@ gst_gl_mixer_change_state (GstElement * element, GstStateChange transition) g_object_unref (mix->display); mix->display = NULL; } + while (walk) { + GstGLMixerPad *sink_pad = GST_GL_MIXER_PAD (walk->data); + walk = g_slist_next (walk); + if (sink_pad->display) { + gst_gl_display_activate_gl_context (sink_pad->display, TRUE); + g_object_unref (sink_pad->display); + sink_pad->display = NULL; + } + } break; } default: