discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=38d18e559d3c99371a9ad7a019ab2fbdd06f0437

commit 38d18e559d3c99371a9ad7a019ab2fbdd06f0437
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Fri Jul 7 16:26:50 2017 -0400

    ecore-wl2: create surfaces once compositor global is bound
    
    it's expected that surfaces are created when a window exists
    
    @fix
---
 src/lib/ecore_wl2/ecore_wl2_display.c | 3 +++
 src/lib/ecore_wl2/ecore_wl2_private.h | 1 +
 src/lib/ecore_wl2/ecore_wl2_window.c  | 2 +-
 3 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore_wl2/ecore_wl2_display.c 
b/src/lib/ecore_wl2/ecore_wl2_display.c
index b828bdaed6..94fdd56c82 100644
--- a/src/lib/ecore_wl2/ecore_wl2_display.c
+++ b/src/lib/ecore_wl2/ecore_wl2_display.c
@@ -138,10 +138,13 @@ _cb_global_add(void *data, struct wl_registry *registry, 
unsigned int id, const
 
    if (!strcmp(interface, "wl_compositor"))
      {
+        Ecore_Wl2_Window *window;
         ewd->wl.compositor_version = MIN(version, 4);
         ewd->wl.compositor =
           wl_registry_bind(registry, id, &wl_compositor_interface,
                            ewd->wl.compositor_version);
+        EINA_INLIST_FOREACH(ewd->windows, window)
+          _ecore_wl2_window_surface_create(window);
      }
    else if (!strcmp(interface, "wl_subcompositor"))
      {
diff --git a/src/lib/ecore_wl2/ecore_wl2_private.h 
b/src/lib/ecore_wl2/ecore_wl2_private.h
index da7a8ae3ef..ec2f88768d 100644
--- a/src/lib/ecore_wl2/ecore_wl2_private.h
+++ b/src/lib/ecore_wl2/ecore_wl2_private.h
@@ -502,6 +502,7 @@ void _ecore_wl2_dnd_del(Ecore_Wl2_Dnd_Source *source);
 void _ecore_wl2_subsurf_unmap(Ecore_Wl2_Subsurface *subsurf);
 void _ecore_wl2_subsurf_free(Ecore_Wl2_Subsurface *subsurf);
 
+void _ecore_wl2_window_surface_create(Ecore_Wl2_Window *window);
 void _ecore_wl2_window_shell_surface_init(Ecore_Wl2_Window *window);
 void _ecore_wl2_window_www_surface_init(Ecore_Wl2_Window *window);
 void _ecore_wl2_window_semi_free(Ecore_Wl2_Window *window);
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 98f25dd175..f16535fb22 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -537,7 +537,7 @@ surf_err:
    ERR("Failed to create surface for window");
 }
 
-static void
+void
 _ecore_wl2_window_surface_create(Ecore_Wl2_Window *window)
 {
    if (!window->display->wl.compositor) return;

-- 


Reply via email to