mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-03 21:12:26 +00:00
[412/906] Cocoa backend: improve support on GNUStep
This commit is contained in:
parent
0b6112c4a0
commit
b36b45e437
8 changed files with 98 additions and 63 deletions
|
@ -6,6 +6,7 @@ gstlibsgstgl_C_FILES = \
|
||||||
gstgldisplay.c \
|
gstgldisplay.c \
|
||||||
gstglbuffer.c \
|
gstglbuffer.c \
|
||||||
gstglfilter.c \
|
gstglfilter.c \
|
||||||
|
gstglmixer.c \
|
||||||
gstglshader.c
|
gstglshader.c
|
||||||
|
|
||||||
gstlibsgstgl_OBJC_FILES = gstglwindow_cocoa.m
|
gstlibsgstgl_OBJC_FILES = gstglwindow_cocoa.m
|
||||||
|
@ -13,10 +14,11 @@ gstlibsgstgl_OBJC_FILES = gstglwindow_cocoa.m
|
||||||
ifeq ($(GNUSTEP_TARGET_OS), mingw32)
|
ifeq ($(GNUSTEP_TARGET_OS), mingw32)
|
||||||
gstlibsgstgl_INCLUDE_DIRS = \
|
gstlibsgstgl_INCLUDE_DIRS = \
|
||||||
-I../../../win32/common \
|
-I../../../win32/common \
|
||||||
-ID:/workspace/glib/include/glib-2.0 \
|
-IC:/gstreamer/include/libxml2 \
|
||||||
-ID:/workspace/gstreamer/include \
|
-IC:/gstreamer/include/glib-2.0 \
|
||||||
-ID:/workspace/glib/lib/glib-2.0/include \
|
-IC:/gstreamer/lib/glib-2.0/include \
|
||||||
-ID:/workspace/glew/include
|
-IC:/gstreamer/include \
|
||||||
|
-IC:/gstreamer/include/gstreamer-0.10
|
||||||
endif
|
endif
|
||||||
|
|
||||||
gstlibsgstgl_CFLAGS = -Wall -DHAVE_CONFIG_H
|
gstlibsgstgl_CFLAGS = -Wall -DHAVE_CONFIG_H
|
||||||
|
|
|
@ -112,6 +112,8 @@ static void
|
||||||
gst_gl_display_class_init (GstGLDisplayClass * klass)
|
gst_gl_display_class_init (GstGLDisplayClass * klass)
|
||||||
{
|
{
|
||||||
G_OBJECT_CLASS (klass)->finalize = gst_gl_display_finalize;
|
G_OBJECT_CLASS (klass)->finalize = gst_gl_display_finalize;
|
||||||
|
|
||||||
|
gst_gl_window_init_platform ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -96,6 +96,9 @@ void gst_gl_window_quit_loop (GstGLWindow *window, GstGLWindowCB callback, gpoin
|
||||||
|
|
||||||
void gst_gl_window_send_message (GstGLWindow *window, GstGLWindowCB callback, gpointer data);
|
void gst_gl_window_send_message (GstGLWindow *window, GstGLWindowCB callback, gpointer data);
|
||||||
|
|
||||||
|
/* helper */
|
||||||
|
void gst_gl_window_init_platform ();
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GST_GL_WINDOW_H__ */
|
#endif /* __GST_GL_WINDOW_H__ */
|
||||||
|
|
|
@ -133,6 +133,16 @@ G_DEFINE_TYPE (GstGLWindow, gst_gl_window, G_TYPE_OBJECT);
|
||||||
|
|
||||||
gboolean _gst_gl_window_debug = FALSE;
|
gboolean _gst_gl_window_debug = FALSE;
|
||||||
|
|
||||||
|
void gst_gl_window_init_platform ()
|
||||||
|
{
|
||||||
|
#ifndef GNUSTEP
|
||||||
|
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
|
||||||
|
[NSApplication sharedApplication];
|
||||||
|
|
||||||
|
[pool release];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/* Must be called in the gl thread */
|
/* Must be called in the gl thread */
|
||||||
static void
|
static void
|
||||||
gst_gl_window_finalize (GObject * object)
|
gst_gl_window_finalize (GObject * object)
|
||||||
|
@ -149,26 +159,13 @@ gst_gl_window_log_handler (const gchar * domain, GLogLevelFlags flags,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
|
||||||
gst_gl_window_nsapp_init (GCond *nsapp_init_cond)
|
|
||||||
{
|
|
||||||
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
|
|
||||||
[NSApplication sharedApplication];
|
|
||||||
|
|
||||||
[pool release];
|
|
||||||
|
|
||||||
g_cond_signal (nsapp_init_cond);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
gst_gl_window_nsapp_iteration (gpointer data)
|
gst_gl_window_nsapp_iteration (gpointer data)
|
||||||
{
|
{
|
||||||
NSEvent *event = nil;
|
|
||||||
|
|
||||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
|
|
||||||
|
NSEvent *event = nil;
|
||||||
|
|
||||||
if ([NSThread isMainThread]) {
|
if ([NSThread isMainThread]) {
|
||||||
|
|
||||||
while ((event = ([NSApp nextEventMatchingMask:NSAnyEventMask
|
while ((event = ([NSApp nextEventMatchingMask:NSAnyEventMask
|
||||||
|
@ -176,33 +173,18 @@ gst_gl_window_nsapp_iteration (gpointer data)
|
||||||
inMode:NSDefaultRunLoopMode dequeue:YES])) != nil)
|
inMode:NSDefaultRunLoopMode dequeue:YES])) != nil)
|
||||||
|
|
||||||
[NSApp sendEvent:event];
|
[NSApp sendEvent:event];
|
||||||
|
|
||||||
[pool release];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[pool release];
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_gl_window_class_init (GstGLWindowClass * klass)
|
gst_gl_window_class_init (GstGLWindowClass * klass)
|
||||||
{
|
{
|
||||||
GObjectClass *obj_class = G_OBJECT_CLASS (klass);
|
GObjectClass *obj_class = G_OBJECT_CLASS (klass);
|
||||||
|
|
||||||
GMutex *nsapp_init_mutex = g_mutex_new ();
|
|
||||||
GCond *nsapp_init_cond = g_cond_new ();
|
|
||||||
|
|
||||||
g_mutex_lock (nsapp_init_mutex);
|
|
||||||
|
|
||||||
g_idle_add ((GSourceFunc) gst_gl_window_nsapp_init, nsapp_init_cond);
|
|
||||||
|
|
||||||
g_cond_wait (nsapp_init_cond, nsapp_init_mutex);
|
|
||||||
g_mutex_unlock (nsapp_init_mutex);
|
|
||||||
|
|
||||||
g_mutex_free (nsapp_init_mutex);
|
|
||||||
g_cond_free (nsapp_init_cond);
|
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof (GstGLWindowPrivate));
|
g_type_class_add_private (klass, sizeof (GstGLWindowPrivate));
|
||||||
|
|
||||||
obj_class->finalize = gst_gl_window_finalize;
|
obj_class->finalize = gst_gl_window_finalize;
|
||||||
|
@ -220,10 +202,9 @@ gst_gl_window_init (GstGLWindow * window)
|
||||||
gst_gl_window_log_handler, NULL);
|
gst_gl_window_log_handler, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Must be called in the gl thread */
|
/* Must be called in the gl thread */
|
||||||
GstGLWindow *
|
GstGLWindow *
|
||||||
gst_gl_window_new (gint width, gint height, gulong external_gl_context)
|
gst_gl_window_new (gulong external_gl_context)
|
||||||
{
|
{
|
||||||
GstGLWindow *window = g_object_new (GST_GL_TYPE_WINDOW, NULL);
|
GstGLWindow *window = g_object_new (GST_GL_TYPE_WINDOW, NULL);
|
||||||
GstGLWindowPrivate *priv = window->priv;
|
GstGLWindowPrivate *priv = window->priv;
|
||||||
|
@ -248,11 +229,15 @@ gst_gl_window_new (gint width, gint height, gulong external_gl_context)
|
||||||
GSRegisterCurrentThread();
|
GSRegisterCurrentThread();
|
||||||
|
|
||||||
pool = [[NSAutoreleasePool alloc] init];
|
pool = [[NSAutoreleasePool alloc] init];
|
||||||
|
|
||||||
|
#ifdef GNUSTEP
|
||||||
|
[NSApplication sharedApplication];
|
||||||
|
#endif
|
||||||
|
|
||||||
rect.origin.x = 0;
|
rect.origin.x = 0;
|
||||||
rect.origin.y = 0;
|
rect.origin.y = 0;
|
||||||
rect.size.width = 1;
|
rect.size.width = 320;
|
||||||
rect.size.height = 1;
|
rect.size.height = 240;
|
||||||
|
|
||||||
priv->internal_win_id =[[GstGLNSWindow alloc] initWithContentRect:rect styleMask:
|
priv->internal_win_id =[[GstGLNSWindow alloc] initWithContentRect:rect styleMask:
|
||||||
(NSTitledWindowMask | NSClosableWindowMask |
|
(NSTitledWindowMask | NSClosableWindowMask |
|
||||||
|
@ -267,7 +252,9 @@ gst_gl_window_new (gint width, gint height, gulong external_gl_context)
|
||||||
|
|
||||||
[pool release];
|
[pool release];
|
||||||
|
|
||||||
priv->source_id = g_timeout_add_seconds (1, gst_gl_window_nsapp_iteration, priv->internal_win_id);
|
#ifndef GNUSTEP
|
||||||
|
priv->source_id = g_timeout_add_seconds (1, gst_gl_window_nsapp_iteration, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
@ -294,7 +281,7 @@ callback_activate_gl_context (GstGLWindowPrivate * priv)
|
||||||
void
|
void
|
||||||
callback_inactivate_gl_context (GstGLWindowPrivate * priv)
|
callback_inactivate_gl_context (GstGLWindowPrivate * priv)
|
||||||
{
|
{
|
||||||
[priv->gl_context clearCurrentContext];
|
//FIXME: [priv->gl_context clearCurrentContext];
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -322,14 +309,14 @@ gst_gl_window_set_external_window_id (GstGLWindow * window, gulong id)
|
||||||
AppThreadPerformer* app_thread_performer = [[AppThreadPerformer alloc] initWithPrivate:priv];
|
AppThreadPerformer* app_thread_performer = [[AppThreadPerformer alloc] initWithPrivate:priv];
|
||||||
priv->parent = (NSWindow*) id;
|
priv->parent = (NSWindow*) id;
|
||||||
[app_thread_performer performSelectorOnMainThread:@selector(setWindow)
|
[app_thread_performer performSelectorOnMainThread:@selector(setWindow)
|
||||||
withObject:nil waitUntilDone:YES];
|
withObject:0 waitUntilDone:YES];
|
||||||
|
|
||||||
[pool release];
|
[pool release];
|
||||||
|
|
||||||
GSUnregisterCurrentThread();
|
GSUnregisterCurrentThread();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
g_debug ("failed to register current thread, cannot set external window id");
|
g_debug ("failed to register current thread, cannot set external window id\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Must be called in the gl thread */
|
/* Must be called in the gl thread */
|
||||||
|
@ -406,9 +393,12 @@ gst_gl_window_draw (GstGLWindow * window, gint width, gint height)
|
||||||
x += 20;
|
x += 20;
|
||||||
y += 20;
|
y += 20;
|
||||||
|
|
||||||
g_debug ("make the window available");
|
#ifndef GNUSTEP
|
||||||
|
g_debug ("make the window available\n");
|
||||||
[priv->internal_win_id makeMainWindow];
|
[priv->internal_win_id makeMainWindow];
|
||||||
|
#endif
|
||||||
[priv->internal_win_id orderFront:priv->internal_win_id];
|
[priv->internal_win_id orderFront:priv->internal_win_id];
|
||||||
|
//[priv->internal_win_id setViewsNeedDisplay:YES];
|
||||||
priv->visible = TRUE;
|
priv->visible = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -417,7 +407,7 @@ gst_gl_window_draw (GstGLWindow * window, gint width, gint height)
|
||||||
GSUnregisterCurrentThread();
|
GSUnregisterCurrentThread();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
g_debug ("failed to register current thread, cannot draw");
|
g_debug ("failed to register current thread, cannot draw\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -425,14 +415,20 @@ gst_gl_window_run_loop (GstGLWindow * window)
|
||||||
{
|
{
|
||||||
GstGLWindowPrivate *priv = window->priv;
|
GstGLWindowPrivate *priv = window->priv;
|
||||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
|
#ifndef GNUSTEP
|
||||||
NSRunLoop *run_loop = [NSRunLoop currentRunLoop];
|
NSRunLoop *run_loop = [NSRunLoop currentRunLoop];
|
||||||
|
#endif
|
||||||
g_debug ("begin loop: %lud\n", (gulong) run_loop);
|
|
||||||
|
g_debug ("begin loop\n");
|
||||||
|
|
||||||
if (priv->internal_win_id != nil) {
|
if (priv->internal_win_id != nil) {
|
||||||
while(priv->running)
|
#ifndef GNUSTEP
|
||||||
|
while (priv->running)
|
||||||
[run_loop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
|
[run_loop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
|
||||||
|
#else
|
||||||
|
[NSApp run];
|
||||||
|
#endif
|
||||||
|
|
||||||
[priv->internal_win_id release];
|
[priv->internal_win_id release];
|
||||||
priv->internal_win_id = nil;
|
priv->internal_win_id = nil;
|
||||||
}
|
}
|
||||||
|
@ -449,7 +445,7 @@ gst_gl_window_quit_loop (GstGLWindow * window, GstGLWindowCB callback,
|
||||||
{
|
{
|
||||||
|
|
||||||
if (window) {
|
if (window) {
|
||||||
if (GSRegisterCurrentThread()) {
|
if (GSRegisterCurrentThread() || 1) {
|
||||||
GstGLWindowPrivate *priv = window->priv;
|
GstGLWindowPrivate *priv = window->priv;
|
||||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
|
|
||||||
|
@ -464,7 +460,7 @@ gst_gl_window_quit_loop (GstGLWindow * window, GstGLWindowCB callback,
|
||||||
GSUnregisterCurrentThread();
|
GSUnregisterCurrentThread();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
g_debug ("failed to register current thread, application thread is lost");
|
g_debug ("failed to register current thread, application thread is lost\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -489,7 +485,7 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
|
||||||
GSUnregisterCurrentThread();
|
GSUnregisterCurrentThread();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
g_debug ("failed to register current thread, cannot send message");
|
g_debug ("failed to register current thread, cannot send message\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -526,7 +522,7 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
|
||||||
|
|
||||||
[self setReleasedWhenClosed:NO];
|
[self setReleasedWhenClosed:NO];
|
||||||
|
|
||||||
g_debug ("initializing GstGLNSWindow");
|
g_debug ("initializing GstGLNSWindow\n");
|
||||||
|
|
||||||
glView = [GstGLNSOpenGLView alloc];
|
glView = [GstGLNSOpenGLView alloc];
|
||||||
|
|
||||||
|
@ -541,6 +537,7 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
|
||||||
|
|
||||||
[self setContentView:glView];
|
[self setContentView:glView];
|
||||||
|
|
||||||
|
#ifndef GNUSTEP
|
||||||
glContext = [[NSOpenGLContext alloc] initWithFormat:fmt
|
glContext = [[NSOpenGLContext alloc] initWithFormat:fmt
|
||||||
shareContext:m_priv->external_gl_context];
|
shareContext:m_priv->external_gl_context];
|
||||||
|
|
||||||
|
@ -549,6 +546,9 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
|
||||||
priv->gl_context = glContext;
|
priv->gl_context = glContext;
|
||||||
|
|
||||||
[glView setOpenGLContext:glContext];
|
[glView setOpenGLContext:glContext];
|
||||||
|
#else
|
||||||
|
glContext = [glView openGLContext];
|
||||||
|
#endif
|
||||||
|
|
||||||
/* OpenGL context is made current only one time threre.
|
/* OpenGL context is made current only one time threre.
|
||||||
* Indeed, all OpenGL calls are made in only one thread,
|
* Indeed, all OpenGL calls are made in only one thread,
|
||||||
|
@ -562,15 +562,19 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
|
||||||
*/
|
*/
|
||||||
NS_DURING {
|
NS_DURING {
|
||||||
if (glContext) {
|
if (glContext) {
|
||||||
long swapInterval = 1;
|
#ifdef GNUSTEP
|
||||||
[[glView openGLContext] setValues:(const GLint *)&swapInterval forParameter:NSOpenGLCPSwapInterval];
|
const long swapInterval = 1;
|
||||||
|
#else
|
||||||
|
const GLint swapInterval = 1;
|
||||||
|
#endif
|
||||||
|
[[glView openGLContext] setValues:&swapInterval forParameter:NSOpenGLCPSwapInterval];
|
||||||
}
|
}
|
||||||
} NS_HANDLER {
|
} NS_HANDLER {
|
||||||
g_debug ("your back-end does not implement NSOpenglContext::setValues");
|
g_debug ("your back-end does not implement NSOpenglContext::setValues\n");
|
||||||
}
|
}
|
||||||
NS_ENDHANDLER
|
NS_ENDHANDLER
|
||||||
|
|
||||||
g_debug ("opengl GstGLNSWindow initialized: %d x %d",
|
g_debug ("opengl GstGLNSWindow initialized: %d x %d\n",
|
||||||
(gint) contentRect.size.width, (gint) contentRect.size.height);
|
(gint) contentRect.size.width, (gint) contentRect.size.height);
|
||||||
|
|
||||||
[self setTitle:@"OpenGL renderer"];
|
[self setTitle:@"OpenGL renderer"];
|
||||||
|
@ -604,6 +608,8 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
|
||||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
AppThreadPerformer* app_thread_performer = [[AppThreadPerformer alloc]
|
AppThreadPerformer* app_thread_performer = [[AppThreadPerformer alloc]
|
||||||
initWithPrivate:m_priv];
|
initWithPrivate:m_priv];
|
||||||
|
|
||||||
|
g_debug ("user clicked the close button\n");
|
||||||
|
|
||||||
[app_thread_performer performSelector:@selector(closeWindow) onThread:m_priv->thread
|
[app_thread_performer performSelector:@selector(closeWindow) onThread:m_priv->thread
|
||||||
withObject:nil waitUntilDone:YES];
|
withObject:nil waitUntilDone:YES];
|
||||||
|
@ -645,15 +651,15 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
|
||||||
m_priv = priv;
|
m_priv = priv;
|
||||||
m_resizeCount = 0;
|
m_resizeCount = 0;
|
||||||
|
|
||||||
|
#ifndef GNUSTEP
|
||||||
[self setWantsLayer:NO];
|
[self setWantsLayer:NO];
|
||||||
|
#endif
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)reshape {
|
- (void)reshape {
|
||||||
|
|
||||||
|
|
||||||
if (m_resizeCount % 5 == 0) {
|
if (m_resizeCount % 5 == 0) {
|
||||||
m_resizeCount = 0;
|
m_resizeCount = 0;
|
||||||
if (m_priv->resize_cb) {
|
if (m_priv->resize_cb) {
|
||||||
|
@ -772,6 +778,13 @@ gst_gl_window_send_message (GstGLWindow * window, GstGLWindowCB callback,
|
||||||
- (void) stopApp {
|
- (void) stopApp {
|
||||||
m_priv->running = FALSE;
|
m_priv->running = FALSE;
|
||||||
m_callback (m_data);
|
m_callback (m_data);
|
||||||
|
|
||||||
|
#ifdef GNUSTEP
|
||||||
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
|
if ([NSApp isRunning])
|
||||||
|
[NSApp stop:self];
|
||||||
|
[pool release];
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) closeWindow {
|
- (void) closeWindow {
|
||||||
|
|
|
@ -69,6 +69,10 @@ G_DEFINE_TYPE (GstGLWindow, gst_gl_window, G_TYPE_OBJECT);
|
||||||
|
|
||||||
gboolean _gst_gl_window_debug = FALSE;
|
gboolean _gst_gl_window_debug = FALSE;
|
||||||
|
|
||||||
|
void gst_gl_window_init_platform ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
HHOOK hHook;
|
HHOOK hHook;
|
||||||
|
|
||||||
/* Must be called in the gl thread */
|
/* Must be called in the gl thread */
|
||||||
|
@ -196,7 +200,6 @@ gst_gl_window_get_internal_gl_context (GstGLWindow *window)
|
||||||
return (gulong) priv->gl_context;
|
return (gulong) priv->gl_context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
callback_activate_gl_context (GstGLWindowPrivate *priv)
|
callback_activate_gl_context (GstGLWindowPrivate *priv)
|
||||||
{
|
{
|
||||||
|
|
|
@ -66,6 +66,10 @@ G_DEFINE_TYPE (GstGLWindow, gst_gl_window, G_TYPE_OBJECT);
|
||||||
|
|
||||||
gboolean _gst_gl_window_debug = FALSE;
|
gboolean _gst_gl_window_debug = FALSE;
|
||||||
|
|
||||||
|
void gst_gl_window_init_platform ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
HHOOK hHook;
|
HHOOK hHook;
|
||||||
|
|
||||||
/* Must be called in the gl thread */
|
/* Must be called in the gl thread */
|
||||||
|
|
|
@ -90,6 +90,10 @@ G_DEFINE_TYPE (GstGLWindow, gst_gl_window, G_TYPE_OBJECT);
|
||||||
|
|
||||||
gboolean _gst_gl_window_debug = FALSE;
|
gboolean _gst_gl_window_debug = FALSE;
|
||||||
|
|
||||||
|
void gst_gl_window_init_platform ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/* Must be called in the gl thread */
|
/* Must be called in the gl thread */
|
||||||
static void
|
static void
|
||||||
gst_gl_window_finalize (GObject * object)
|
gst_gl_window_finalize (GObject * object)
|
||||||
|
|
|
@ -91,6 +91,10 @@ G_DEFINE_TYPE (GstGLWindow, gst_gl_window, G_TYPE_OBJECT);
|
||||||
|
|
||||||
gboolean _gst_gl_window_debug = FALSE;
|
gboolean _gst_gl_window_debug = FALSE;
|
||||||
|
|
||||||
|
void gst_gl_window_init_platform ()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/* Must be called in the gl thread */
|
/* Must be called in the gl thread */
|
||||||
static void
|
static void
|
||||||
gst_gl_window_finalize (GObject * object)
|
gst_gl_window_finalize (GObject * object)
|
||||||
|
|
Loading…
Reference in a new issue