From: Rafael Antognolli Date: Wed, 4 Sep 2013 15:26:06 +0000 (-0300) Subject: evas/wayland_egl: Do not create a new surface if we already have one. X-Git-Tag: submit/tizen/20130910.211337^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F36%2F9636%2F1;p=platform%2Fupstream%2Fevas.git 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 --- 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