From 3750ca94988426fdc591a94be6f18227763614ec Mon Sep 17 00:00:00 2001 From: Rafael Antognolli Date: Wed, 4 Sep 2013 12:26:06 -0300 Subject: [PATCH] evas/wayland_egl: Do not create a new surface if we already have one. "Second eglCreateWindowSurface call should fail according to EGL standard, the fact that it doesn't (and further eglMakeCurrent call works) is just EGL implementation author's good will." Patch by: Wang Quanxian Change-Id: I5f426fbe0ab355bd650453ae73329c7db3645479 --- ChangeLog | 5 +++++ src/modules/engines/wayland_egl/evas_engine.c | 23 +++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2ee755a..0a97875 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1339,3 +1339,8 @@ 2013-08-02 Eduardo Lima (Etrunko) * 1.7.8 release + +2013-09-03 Rafael Antognolli + + * Evas wayland_egl: Do not create a new surface if we already have + one. diff --git a/src/modules/engines/wayland_egl/evas_engine.c b/src/modules/engines/wayland_egl/evas_engine.c index cbe10e4..a50dac0 100644 --- a/src/modules/engines/wayland_egl/evas_engine.c +++ b/src/modules/engines/wayland_egl/evas_engine.c @@ -574,15 +574,22 @@ _create_internal_glue_resources(void *data) context_attrs[1] = 2; context_attrs[2] = EGL_NONE; - // Create resource surface for EGL - rsc->surface = - eglCreateWindowSurface(re->win->egl_disp, re->win->egl_config, - (EGLNativeWindowType)re->win->win, NULL); - if (!rsc->surface) + if (eina_main_loop_is()) { - ERR("Creating internal resource surface failed."); - free(rsc); - return NULL; + rsc->surface = re->win->egl_surface[0]; + } + else + { + // Create resource surface for EGL + rsc->surface = + eglCreateWindowSurface(re->win->egl_disp, re->win->egl_config, + (EGLNativeWindowType)re->win->win, NULL); + if (!rsc->surface) + { + ERR("Creating internal resource surface failed."); + free(rsc); + return NULL; + } } // Create a resource context for EGL -- 2.7.4