diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2016-09-26 15:54:27 +0800 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2016-11-18 00:00:10 +0800 |
commit | 8f716772c221331b86a4f7395f59b0dbd48beb8c (patch) | |
tree | 11d88fd4805d5127c96cad4850cfc6c546273d24 /cogl | |
parent | da21f02eb91f13484542829d9e4855715108521a (diff) | |
download | mutter-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.c | 14 | ||||
-rw-r--r-- | cogl/cogl/winsys/cogl-winsys-egl.c | 13 |
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; |