discomfitor pushed a commit to branch efl-1.19.

http://git.enlightenment.org/core/efl.git/commit/?id=90d0701f43777a7e2bf8e66cc0466cd1d0809671

commit 90d0701f43777a7e2bf8e66cc0466cd1d0809671
Author: Mike Blumenkrantz <[email protected]>
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 9f1ceadb75..1e91624006 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 92eb127116..110f2c112c 100644
--- a/src/lib/ecore_wl2/ecore_wl2_private.h
+++ b/src/lib/ecore_wl2/ecore_wl2_private.h
@@ -476,6 +476,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_wl_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 b141fcfb92..fe5a22482a 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -522,7 +522,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