[757/906] egl: Create an offscreen surface if no window was provided
authorSebastian Dröge <slomo@circular-chaos.org>
Mon, 15 Jul 2013 16:01:55 +0000 (18:01 +0200)
committerMatthew Waters <ystreet00@gmail.com>
Sat, 15 Mar 2014 17:36:59 +0000 (18:36 +0100)
gst-libs/gst/gl/gstglegl.c

index 480937c..71441bc 100644 (file)
@@ -196,8 +196,29 @@ gst_gl_egl_create_context (EGLDisplay display, EGLNativeWindowType window,
     goto failure;
   }
 
-  egl->egl_surface =
-      eglCreateWindowSurface (egl->egl_display, egl->egl_config, window, NULL);
+
+  if (window) {
+    egl->egl_surface =
+        eglCreateWindowSurface (egl->egl_display, egl->egl_config, window,
+        NULL);
+  } else {
+    EGLint surface_attrib[7];
+    gint j = 0;
+
+    /* FIXME: Width/height doesn't seem to matter but we can't leave them
+     * at 0, otherwise X11 complains about BadValue */
+    surface_attrib[j++] = EGL_WIDTH;
+    surface_attrib[j++] = 1;
+    surface_attrib[j++] = EGL_HEIGHT;
+    surface_attrib[j++] = 1;
+    surface_attrib[j++] = EGL_LARGEST_PBUFFER;
+    surface_attrib[j++] = EGL_TRUE;
+    surface_attrib[j++] = EGL_NONE;
+
+    egl->egl_surface =
+        eglCreatePbufferSurface (egl->egl_display, egl->egl_config,
+        surface_attrib);
+  }
 
   if (egl->egl_surface != EGL_NO_SURFACE) {
     GST_INFO ("surface created");