summaryrefslogtreecommitdiff
path: root/cogl
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2016-09-26 15:54:27 +0800
committerJonas Ådahl <jadahl@gmail.com>2016-11-18 00:00:10 +0800
commit8f716772c221331b86a4f7395f59b0dbd48beb8c (patch)
tree11d88fd4805d5127c96cad4850cfc6c546273d24 /cogl
parentda21f02eb91f13484542829d9e4855715108521a (diff)
downloadmutter-8f716772c221331b86a4f7395f59b0dbd48beb8c.tar.gz
cogl: Make platforms set the EGL_SURFACE_TYPE
Cogl has no way to know how to properly set the surface type, so lets outsource that to the platform layer. https://bugzilla.gnome.org/show_bug.cgi?id=773629
Diffstat (limited to 'cogl')
-rw-r--r--cogl/cogl/winsys/cogl-winsys-egl-x11.c14
-rw-r--r--cogl/cogl/winsys/cogl-winsys-egl.c13
2 files changed, 19 insertions, 8 deletions
diff --git a/cogl/cogl/winsys/cogl-winsys-egl-x11.c b/cogl/cogl/winsys/cogl-winsys-egl-x11.c
index 454b41ebc..b7e4e629d 100644
--- a/cogl/cogl/winsys/cogl-winsys-egl-x11.c
+++ b/cogl/cogl/winsys/cogl-winsys-egl-x11.c
@@ -290,6 +290,19 @@ error:
return FALSE;
}
+static int
+_cogl_winsys_egl_add_config_attributes (CoglDisplay *display,
+ CoglFramebufferConfig *config,
+ EGLint *attributes)
+{
+ int i = 0;
+
+ attributes[i++] = EGL_SURFACE_TYPE;
+ attributes[i++] = EGL_WINDOW_BIT;
+
+ return i;
+}
+
static CoglBool
_cogl_winsys_egl_display_setup (CoglDisplay *display,
CoglError **error)
@@ -794,6 +807,7 @@ _cogl_winsys_texture_pixmap_x11_get_texture (CoglTexturePixmapX11 *tex_pixmap,
static const CoglWinsysEGLVtable
_cogl_winsys_egl_vtable =
{
+ .add_config_attributes = _cogl_winsys_egl_add_config_attributes,
.display_setup = _cogl_winsys_egl_display_setup,
.display_destroy = _cogl_winsys_egl_display_destroy,
.context_created = _cogl_winsys_egl_context_created,
diff --git a/cogl/cogl/winsys/cogl-winsys-egl.c b/cogl/cogl/winsys/cogl-winsys-egl.c
index dbf14f6a5..8f2bcc7de 100644
--- a/cogl/cogl/winsys/cogl-winsys-egl.c
+++ b/cogl/cogl/winsys/cogl-winsys-egl.c
@@ -233,11 +233,11 @@ egl_attributes_from_framebuffer_config (CoglDisplay *display,
CoglRendererEGL *egl_renderer = renderer->winsys;
int i = 0;
- /* Let the platform add attributes first */
- if (egl_renderer->platform_vtable->add_config_attributes)
- i = egl_renderer->platform_vtable->add_config_attributes (display,
- config,
- attributes);
+ /* Let the platform add attributes first, including setting the
+ * EGL_SURFACE_TYPE */
+ i = egl_renderer->platform_vtable->add_config_attributes (display,
+ config,
+ attributes);
if (config->need_stencil)
{
@@ -269,9 +269,6 @@ egl_attributes_from_framebuffer_config (CoglDisplay *display,
EGL_OPENGL_ES_BIT :
EGL_OPENGL_ES2_BIT);
- attributes[i++] = EGL_SURFACE_TYPE;
- attributes[i++] = EGL_WINDOW_BIT;
-
if (config->samples_per_pixel)
{
attributes[i++] = EGL_SAMPLE_BUFFERS;