discomfitor pushed a commit to branch master.

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

commit de1a6d6f4294ccb25d73d96f765420cc6cb3fff6
Author: Mike Blumenkrantz <[email protected]>
Date:   Fri Jan 13 11:34:07 2017 -0500

    ecore-wl2: make session recovery listener global
    
    global proxies have a single instance and do not work with
    multiple listeners
    
    @fix
---
 src/lib/ecore_wl2/ecore_wl2_display.c | 15 +++++++++++++++
 src/lib/ecore_wl2/ecore_wl2_window.c  | 17 +----------------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/lib/ecore_wl2/ecore_wl2_display.c 
b/src/lib/ecore_wl2/ecore_wl2_display.c
index e25aa75..139e2ff 100644
--- a/src/lib/ecore_wl2/ecore_wl2_display.c
+++ b/src/lib/ecore_wl2/ecore_wl2_display.c
@@ -70,6 +70,19 @@ static const struct zxdg_shell_v6_listener 
_zxdg_shell_listener =
 };
 
 static void
+_session_recovery_create_uuid(void *data EINA_UNUSED, struct 
zwp_e_session_recovery *session_recovery EINA_UNUSED, struct wl_surface 
*surface, const char *uuid)
+{
+   Ecore_Wl2_Window *win = wl_surface_get_user_data(surface);
+
+   eina_stringshare_replace(&win->uuid, uuid);
+}
+
+static const struct zwp_e_session_recovery_listener _session_listener =
+{
+   _session_recovery_create_uuid,
+};
+
+static void
 _cb_global_event_free(void *data EINA_UNUSED, void *event)
 {
    Ecore_Wl2_Event_Global *ev;
@@ -185,6 +198,8 @@ _cb_global_add(void *data, struct wl_registry *registry, 
unsigned int id, const
         ewd->wl.session_recovery =
           wl_registry_bind(registry, id,
                            &zwp_e_session_recovery_interface, 1);
+        zwp_e_session_recovery_add_listener(ewd->wl.session_recovery,
+                                            &_session_listener, ewd);
      }
    else if (!strcmp(interface, "zwp_teamwork"))
      {
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c 
b/src/lib/ecore_wl2/ecore_wl2_window.c
index 444b5c3..327185c 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -35,18 +35,6 @@ _ecore_wl_window_semi_free(Ecore_Wl2_Window *window)
    window->surface_id = -1;
 }
 
-static void
-_session_recovery_create_uuid(void *data, struct zwp_e_session_recovery 
*session_recovery EINA_UNUSED, struct wl_surface *surface EINA_UNUSED, const 
char *uuid)
-{
-   Ecore_Wl2_Window *win = data;
-
-   eina_stringshare_replace(&win->uuid, uuid);
-}
-
-static const struct zwp_e_session_recovery_listener _session_listener =
-{
-   _session_recovery_create_uuid,
-};
 
 static void
 _ecore_wl2_window_configure_send(Ecore_Wl2_Window *window, int w, int h, 
unsigned int edges, Eina_Bool fs, Eina_Bool max)
@@ -592,13 +580,10 @@ _ecore_wl2_window_surface_create(Ecore_Wl2_Window *window)
              ERR("Failed to create surface for window");
              return;
           }
+        wl_surface_set_user_data(window->surface, window);
 
         window->surface_id =
           wl_proxy_get_id((struct wl_proxy *)window->surface);
-
-        if (window->display->wl.session_recovery)
-          
zwp_e_session_recovery_add_listener(window->display->wl.session_recovery,
-                                              &_session_listener, window);
      }
 }
 

-- 


Reply via email to