mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
gl/cocoa: instead of class_init use g_once to setup nsapp
This commit is contained in:
parent
8a0a71ff03
commit
4801db552d
1 changed files with 30 additions and 28 deletions
|
@ -105,36 +105,15 @@ gst_gl_window_cocoa_nsapp_iteration (gpointer data)
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static gpointer
|
||||||
gst_gl_context_cocoa_class_init (GstGLContextCocoaClass * klass)
|
gst_gl_context_cocoa_setup_nsapp (gpointer data)
|
||||||
{
|
{
|
||||||
GstGLContextClass *context_class = (GstGLContextClass *) klass;
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
#ifndef GSTREAMER_GLIB_COCOA_NSAPPLICATION
|
|
||||||
NSAutoreleasePool* pool = nil;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof (GstGLContextCocoaPrivate));
|
|
||||||
|
|
||||||
context_class->destroy_context =
|
|
||||||
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_destroy_context);
|
|
||||||
context_class->create_context =
|
|
||||||
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_create_context);
|
|
||||||
context_class->get_gl_context =
|
|
||||||
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_get_gl_context);
|
|
||||||
context_class->activate = GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_activate);
|
|
||||||
context_class->get_gl_api =
|
|
||||||
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_get_gl_api);
|
|
||||||
context_class->get_gl_platform =
|
|
||||||
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_get_gl_platform);
|
|
||||||
|
|
||||||
#ifndef GSTREAMER_GLIB_COCOA_NSAPPLICATION
|
|
||||||
pool = [[NSAutoreleasePool alloc] init];
|
|
||||||
|
|
||||||
/* [NSApplication sharedApplication] will usually be
|
/* [NSApplication sharedApplication] will usually be
|
||||||
* called in your application so it's not necessary
|
* called in your application so it's not necessary
|
||||||
* to do that the following. Except for debugging
|
* to do that the following. Except for debugging
|
||||||
* purpose like when using gst-launch.
|
* purpose like when using gst-launch.
|
||||||
* So here we handle the two cases where the first
|
* So here we handle the two cases where the first
|
||||||
* GstGLContext is either created in the main thread
|
* GstGLContext is either created in the main thread
|
||||||
|
@ -193,7 +172,30 @@ gst_gl_context_cocoa_class_init (GstGLContextCocoaClass * klass)
|
||||||
}
|
}
|
||||||
|
|
||||||
[pool release];
|
[pool release];
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_gl_context_cocoa_class_init (GstGLContextCocoaClass * klass)
|
||||||
|
{
|
||||||
|
GstGLContextClass *context_class = (GstGLContextClass *) klass;
|
||||||
|
|
||||||
|
g_type_class_add_private (klass, sizeof (GstGLContextCocoaPrivate));
|
||||||
|
|
||||||
|
context_class->destroy_context =
|
||||||
|
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_destroy_context);
|
||||||
|
context_class->create_context =
|
||||||
|
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_create_context);
|
||||||
|
context_class->get_gl_context =
|
||||||
|
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_get_gl_context);
|
||||||
|
context_class->activate = GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_activate);
|
||||||
|
context_class->get_gl_api =
|
||||||
|
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_get_gl_api);
|
||||||
|
context_class->get_gl_platform =
|
||||||
|
GST_DEBUG_FUNCPTR (gst_gl_context_cocoa_get_gl_platform);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -298,7 +300,7 @@ gst_gl_context_cocoa_create_context (GstGLContext *context, GstGLAPI gl_api,
|
||||||
GstGLWindow *window = gst_gl_context_get_window (context);
|
GstGLWindow *window = gst_gl_context_get_window (context);
|
||||||
GstGLWindowCocoa *window_cocoa = GST_GL_WINDOW_COCOA (window);
|
GstGLWindowCocoa *window_cocoa = GST_GL_WINDOW_COCOA (window);
|
||||||
const GLint swapInterval = 1;
|
const GLint swapInterval = 1;
|
||||||
NSAutoreleasePool *pool;
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
CGLPixelFormatObj fmt = NULL;
|
CGLPixelFormatObj fmt = NULL;
|
||||||
CGLContextObj glContext;
|
CGLContextObj glContext;
|
||||||
CGLPixelFormatAttribute attribs[] = {
|
CGLPixelFormatAttribute attribs[] = {
|
||||||
|
@ -309,9 +311,9 @@ gst_gl_context_cocoa_create_context (GstGLContext *context, GstGLAPI gl_api,
|
||||||
CGLError ret;
|
CGLError ret;
|
||||||
gint npix;
|
gint npix;
|
||||||
|
|
||||||
pool = [[NSAutoreleasePool alloc] init];
|
|
||||||
|
|
||||||
#ifndef GSTREAMER_GLIB_COCOA_NSAPPLICATION
|
#ifndef GSTREAMER_GLIB_COCOA_NSAPPLICATION
|
||||||
|
static GOnce once = G_ONCE_INIT;
|
||||||
|
g_once (&once, gst_gl_context_cocoa_setup_nsapp, context);
|
||||||
priv->source_id = g_timeout_add (60, gst_gl_window_cocoa_nsapp_iteration, NULL);
|
priv->source_id = g_timeout_add (60, gst_gl_window_cocoa_nsapp_iteration, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue