GstGLContext *other_context;
gboolean gl_result;
+ gboolean gl_started;
};
/* Properties */
} else {
filter->priv->gl_result = TRUE;
}
+
+ filter->priv->gl_started |= filter->priv->gl_result;
}
static void
GstGLBaseFilter *filter = GST_GL_BASE_FILTER (data);
GstGLBaseFilterClass *filter_class = GST_GL_BASE_FILTER_GET_CLASS (filter);
- if (filter_class->gl_stop)
- filter_class->gl_stop (filter);
+ if (filter->priv->gl_started) {
+ if (filter_class->gl_stop)
+ filter_class->gl_stop (filter);
+ }
+
+ filter->priv->gl_started = FALSE;
}
static gboolean
GST_OBJECT_UNLOCK (filter->display);
}
+ if (filter->priv->gl_started)
+ gst_gl_context_thread_add (filter->context, gst_gl_base_filter_gl_stop,
+ filter);
+
gst_gl_context_thread_add (filter->context, gst_gl_base_filter_gl_start,
filter);
if (!filter->priv->gl_result)