if (!mix->context) {
mix->context = gst_gl_context_new (mix->display);
if (!gst_gl_context_create (mix->context, mix->priv->other_context,
- &error))
+ &error)) {
+ GST_OBJECT_UNLOCK (mix->display);
goto context_error;
+ }
}
} while (!gst_gl_display_add_context (mix->display, mix->context));
GST_OBJECT_UNLOCK (mix->display);
gl_sink->display);
gl_sink->context = gst_gl_context_new (gl_sink->display);
- if (!gl_sink->context)
+ if (!gl_sink->context) {
+ GST_OBJECT_UNLOCK (gl_sink->display);
goto context_creation_error;
+ }
window = gst_gl_context_get_window (gl_sink->context);
if (other_context)
gst_object_unref (other_context);
gst_object_unref (window);
+ GST_OBJECT_UNLOCK (gl_sink->display);
goto context_error;
}
gst_gl_display_get_gl_context_for_thread (src->display, NULL);
if (!src->context) {
src->context = gst_gl_context_new (src->display);
- if (!gst_gl_context_create (src->context, src->other_context, &error))
+ if (!gst_gl_context_create (src->context, src->other_context, &error)) {
+ GST_OBJECT_UNLOCK (src->display);
goto context_error;
+ }
}
} while (!gst_gl_display_add_context (src->display, src->context));
GST_OBJECT_UNLOCK (src->display);
{
GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, ("%s", error->message),
(NULL));
- gst_object_unref (src->context);
+ if (src->context)
+ gst_object_unref (src->context);
src->context = NULL;
return FALSE;
}
gst_gl_display_get_gl_context_for_thread (filter->display, NULL);
if (!filter->context) {
filter->context = gst_gl_context_new (filter->display);
- if (!filter->context)
+ if (!filter->context) {
+ GST_OBJECT_UNLOCK (filter->display);
goto context_null_error;
+ }
if (!gst_gl_context_create (filter->context,
- filter->priv->other_context, &error))
+ filter->priv->other_context, &error)) {
+ GST_OBJECT_UNLOCK (filter->display);
goto context_error;
+ }
}
} while (!gst_gl_display_add_context (filter->display, filter->context));
GST_OBJECT_UNLOCK (filter->display);