g_mutex_clear (&display->mutex);
- if (display->error_message) {
- g_free (display->error_message);
- display->error_message = NULL;
- }
-
if (display->gl_vtable) {
g_slice_free (GstGLFuncs, display->gl_vtable);
display->gl_vtable = NULL;
/* Called in the gl thread */
void
-gst_gl_display_set_error (GstGLDisplay * display, const char *format, ...)
-{
- va_list args;
-
- if (display->error_message)
- g_free (display->error_message);
-
- va_start (args, format);
- display->error_message = g_strdup_vprintf (format, args);
- va_end (args);
-
- GST_WARNING ("%s", display->error_message);
-}
-
-void
gst_gl_display_thread_run_generic (GstGLDisplay * display)
{
GST_TRACE ("running function:%p data:%p",
*/
typedef void (*GstGLDisplayThreadFunc) (GstGLDisplay * display, gpointer data);
-#define GST_GL_DISPLAY_ERR_MSG(obj) ("%s", GST_GL_DISPLAY_CAST(obj)->error_message)
-
/**
* GstGLDisplay:
*
/* foreign gl context */
gulong external_gl_context;
- gchar *error_message;
-
GstGLFuncs *gl_vtable;
GstGLDisplayPrivate *priv;
gulong gst_gl_display_get_internal_gl_context (GstGLDisplay * display);
-/* Must be called inside a lock/unlock on display, or within the glthread */
-void gst_gl_display_set_error (GstGLDisplay * display, const char * format, ...);
-
void gst_gl_display_lock (GstGLDisplay * display);
void gst_gl_display_unlock (GstGLDisplay * display);
GstGLAPI gst_gl_display_get_gl_api (GstGLDisplay * display);
display_error:
{
GST_ELEMENT_ERROR (filter, RESOURCE, NOT_FOUND,
- GST_GL_DISPLAY_ERR_MSG (filter->display), (NULL));
+ ("%s", gst_gl_display_get_error ()), (NULL));
return FALSE;
}
display_error:
{
GST_ELEMENT_ERROR (mix, RESOURCE, NOT_FOUND,
- GST_GL_DISPLAY_ERR_MSG (mix->display), (NULL));
+ ("%s", gst_gl_display_get_error ()), (NULL));
return FALSE;
}
}
static void _gen_shader (GstGLDisplay * display);
static void _del_shader (GstGLDisplay * display);
+static gchar *error_message;
+
static void
gst_gl_display_gen_texture_window_cb (GstGLDisplay * display)
{
return alive;
}
+void
+gst_gl_display_set_error (GstGLDisplay * display, const char *format, ...)
+{
+ va_list args;
+
+ if (error_message)
+ g_free (error_message);
+
+ va_start (args, format);
+ error_message = g_strdup_vprintf (format, args);
+ va_end (args);
+
+ GST_WARNING ("%s", error_message);
+}
+
+gchar *
+gst_gl_display_get_error (void)
+{
+ return error_message;
+}
/* Called by glfilter */
void
gboolean gst_gl_display_check_framebuffer_status (GstGLDisplay * display);
void gst_gl_display_activate_gl_context (GstGLDisplay * display, gboolean activate);
+void gst_gl_display_set_error (GstGLDisplay * display, const char * format, ...);
+gchar *gst_gl_display_get_error (void);
+
#endif /* __GST_GL_UTILS_H__ */