glcontext/wgl: try wglCreateContextAttribsARB even not gl3 core profile
authorWang Xin-yu (王昕宇) <comicfans44@gmail.com>
Tue, 22 Mar 2016 08:51:53 +0000 (16:51 +0800)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:32:20 +0000 (19:32 +0000)
https://bugzilla.gnome.org/show_bug.cgi?id=764018

gst-libs/gst/gl/win32/gstglcontext_wgl.c

index 6fd7dd1..0961e40 100644 (file)
@@ -223,23 +223,35 @@ gst_gl_context_wgl_create_context (GstGLContext * context,
   }
 
   if (!context_wgl->wgl_context) {
-    context_wgl->wgl_context = wglCreateContext (device);
 
-    if (!context_wgl->wgl_context) {
-      g_set_error (error, GST_GL_CONTEXT_ERROR,
-          GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
-          "Failed to create WGL context 0x%x", (unsigned int) GetLastError ());
-      goto failure;
+    if (context_wgl->priv->wglCreateContextAttribsARB && external_gl_context) {
+      context_wgl->wgl_context =
+          context_wgl->priv->wglCreateContextAttribsARB (device,
+          external_gl_context, 0);
     }
 
-    if (external_gl_context) {
-      if (!wglShareLists (external_gl_context, context_wgl->wgl_context)) {
+
+    if (!context_wgl->wgl_context) {
+
+      context_wgl->wgl_context = wglCreateContext (device);
+
+      if (!context_wgl->wgl_context) {
         g_set_error (error, GST_GL_CONTEXT_ERROR,
             GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
-            "failed to share contexts through wglShareLists 0x%x",
+            "Failed to create WGL context 0x%x",
             (unsigned int) GetLastError ());
         goto failure;
       }
+
+      if (external_gl_context) {
+        if (!wglShareLists (external_gl_context, context_wgl->wgl_context)) {
+          g_set_error (error, GST_GL_CONTEXT_ERROR,
+              GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
+              "failed to share contexts through wglShareLists 0x%x",
+              (unsigned int) GetLastError ());
+          goto failure;
+        }
+      }
     }
 
     context_wgl->priv->context_api = GST_GL_API_OPENGL;