//client callbacks
display->clientReshapeCallback = NULL;
display->clientDrawCallback = NULL;
+ display->client_data = NULL;
//upload
display->upload_fbo = 0;
display->clientReshapeCallback = NULL;
if (display->clientDrawCallback)
display->clientDrawCallback = NULL;
+ if (display->client_data)
+ display->client_data = NULL;
if (display->use_fbo_scene_cb)
display->use_fbo_scene_cb = NULL;
if (display->use_fbo_scene_cb_v2)
{
//check if a client reshape callback is registered
if (display->clientReshapeCallback)
- display->clientReshapeCallback (width, height);
+ display->clientReshapeCallback (width, height, display->client_data);
//default reshape
else {
if (display->clientDrawCallback) {
gboolean doRedisplay =
display->clientDrawCallback (display->redisplay_texture,
- display->redisplay_texture_width, display->redisplay_texture_height);
+ display->redisplay_texture_width, display->redisplay_texture_height,
+ display->client_data);
if (doRedisplay && display->gl_window)
gst_gl_window_draw_unlocked (display->gl_window,
gst_gl_display_unlock (display);
}
+void
+gst_gl_display_set_client_data (GstGLDisplay * display, gpointer data)
+{
+ gst_gl_display_lock (display);
+ display->client_data = data;
+ gst_gl_display_unlock (display);
+}
+
gulong
gst_gl_display_get_internal_gl_context (GstGLDisplay * display)
{
//Client callbacks
-typedef void (*CRCB) (GLuint, GLuint);
-typedef gboolean (*CDCB) (GLuint, GLuint, GLuint);
+typedef void (*CRCB) (GLuint, GLuint, gpointer);
+typedef gboolean (*CDCB) (GLuint, GLuint, GLuint, gpointer);
typedef void (*GstGLDisplayThreadFunc) (GstGLDisplay * display, gpointer data);
//client callbacks
CRCB clientReshapeCallback;
CDCB clientDrawCallback;
+ gpointer client_data;
//upload
GLuint upload_fbo;
void gst_gl_display_set_client_reshape_callback (GstGLDisplay * display,
CRCB cb);
void gst_gl_display_set_client_draw_callback (GstGLDisplay * display, CDCB cb);
+void gst_gl_display_set_client_data (GstGLDisplay * display, gpointer data);
gulong gst_gl_display_get_internal_gl_context (GstGLDisplay * display);
void gst_gl_display_activate_gl_context (GstGLDisplay * display, gboolean activate);