summaryrefslogtreecommitdiff
path: root/cogl/cogl/winsys/cogl-winsys-egl.c
diff options
context:
space:
mode:
Diffstat (limited to 'cogl/cogl/winsys/cogl-winsys-egl.c')
-rw-r--r--cogl/cogl/winsys/cogl-winsys-egl.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/cogl/cogl/winsys/cogl-winsys-egl.c b/cogl/cogl/winsys/cogl-winsys-egl.c
index 8f2bcc7de..fbd6112d4 100644
--- a/cogl/cogl/winsys/cogl-winsys-egl.c
+++ b/cogl/cogl/winsys/cogl-winsys-egl.c
@@ -338,10 +338,9 @@ try_create_context (CoglDisplay *display,
CoglRendererEGL *egl_renderer = renderer->winsys;
EGLDisplay edpy;
EGLConfig config;
- EGLint config_count = 0;
- EGLBoolean status;
EGLint attribs[9];
EGLint cfg_attribs[MAX_EGL_CONFIG_ATTRIBS];
+ GError *config_error = NULL;
const char *error_message;
_COGL_RETURN_VAL_IF_FAIL (egl_display->egl_context == NULL, TRUE);
@@ -356,14 +355,16 @@ try_create_context (CoglDisplay *display,
edpy = egl_renderer->edpy;
- status = eglChooseConfig (edpy,
- cfg_attribs,
- &config, 1,
- &config_count);
- if (status != EGL_TRUE || config_count == 0)
+ if (!egl_renderer->platform_vtable->choose_config (display,
+ cfg_attribs,
+ &config,
+ &config_error))
{
- error_message = "Unable to find a usable EGL configuration";
- goto fail;
+ _cogl_set_error (error, COGL_WINSYS_ERROR,
+ COGL_WINSYS_ERROR_CREATE_CONTEXT,
+ "Couldn't choose config: %s", config_error->message);
+ g_error_free (config_error);
+ goto err;
}
egl_display->egl_config = config;
@@ -419,6 +420,7 @@ fail:
COGL_WINSYS_ERROR_CREATE_CONTEXT,
"%s", error_message);
+err:
cleanup_context (display);
return FALSE;