evas/wayland_egl: Do not create a new surface if we already have one. 36/9636/1 accepted/tizen/ivi/genivi accepted/tizen/ivi/release tizen_ivi_genivi accepted/tizen/20130910.211935 accepted/tizen/ivi/genivi/20140131.030331 accepted/tizen_ivi_release/20131120.050249 ivi_oct_m2 submit/tizen/20130910.211337 submit/tizen_ivi_genivi/20140131.025048 submit/tizen_ivi_release/20131120.032039
authorRafael Antognolli <rafael.antognolli@intel.com>
Wed, 4 Sep 2013 15:26:06 +0000 (12:26 -0300)
committerRafael Antognolli <rafael.antognolli@intel.com>
Wed, 4 Sep 2013 15:29:58 +0000 (12:29 -0300)
"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 <quanxian.wang@intel.com>

Change-Id: I5f426fbe0ab355bd650453ae73329c7db3645479

ChangeLog
src/modules/engines/wayland_egl/evas_engine.c

index 2ee755a..0a97875 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 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.
index cbe10e4..a50dac0 100644 (file)
@@ -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