gl/calayer: provide the exact GL api version for the wrapped context
authorMatthew Waters <matthew@centricular.com>
Fri, 22 May 2015 15:00:18 +0000 (01:00 +1000)
committerMatthew Waters <matthew@centricular.com>
Fri, 22 May 2015 15:26:05 +0000 (01:26 +1000)
Otherwise we could end up being mistaken for the diference between a
gl3 and a gl2 context resulting in a failure getting the list of
extensions from the wrapped context due to the difference between
glGetString and glGetStringi for the GL_EXTENSIONS token.

https://bugzilla.gnome.org/show_bug.cgi?id=749728

gst-libs/gst/gl/cocoa/gstglcaopengllayer.m

index 111bdb1..8ba1e1b 100644 (file)
@@ -109,10 +109,15 @@ _context_ready (gpointer data)
   if (self->draw_context)
     gst_object_unref (self->draw_context);
 
+  if (kCGLNoError != CGLSetCurrentContext (self->gl_context)) {
+    GST_ERROR ("failed set cgl context %p current", self->gl_context);
+    return NULL;
+  }
+
   display = gst_gl_context_get_display (GST_GL_CONTEXT (self->gst_gl_context));
   self->draw_context = gst_gl_context_new_wrapped (display,
       (guintptr) self->gl_context, GST_GL_PLATFORM_CGL,
-      gst_gl_display_get_gl_api (display));
+      gst_gl_context_get_current_gl_api (NULL, NULL));
   gst_object_unref (display);
 
   if (!self->draw_context) {
@@ -120,11 +125,6 @@ _context_ready (gpointer data)
     return NULL;
   }
 
-  if (kCGLNoError != CGLSetCurrentContext (self->gl_context)) {
-    GST_ERROR ("failed set cgl context %p current", self->gl_context);
-    return NULL;
-  }
-
   gst_gl_context_activate (self->draw_context, TRUE);
   if (!gst_gl_context_fill_info (self->draw_context, &error)) {
     GST_ERROR ("failed to fill wrapped context information: %s", error->message);