ecore_wl2: Return NULL from ecore_wl2_window_display_get during recovery
authorDerek Foreman <derekf@osg.samsung.com>
Wed, 29 Nov 2017 21:17:36 +0000 (15:17 -0600)
committerDerek Foreman <derekf@osg.samsung.com>
Fri, 1 Dec 2017 16:58:44 +0000 (10:58 -0600)
This should save us from having to set the window to in the engine info
NULL and then back during/after recovery.

src/lib/ecore_wl2/ecore_wl2_display.c
src/lib/ecore_wl2/ecore_wl2_private.h
src/lib/ecore_wl2/ecore_wl2_window.c

index c703a1a..9785406 100644 (file)
@@ -468,6 +468,7 @@ _recovery_timer_add(Ecore_Wl2_Display *ewd)
 
    ewd->shell_done = EINA_FALSE;
    ewd->sync_done = EINA_FALSE;
+   ewd->recovering = EINA_TRUE;
 
    _ecore_wl2_display_globals_cleanup(ewd);
 
@@ -682,6 +683,8 @@ _ecore_wl2_display_connect(Ecore_Wl2_Display *ewd, Eina_Bool sync)
    ewd->wl.display = wl_display_connect(ewd->name);
    if (!ewd->wl.display) return EINA_FALSE;
 
+   ewd->recovering = EINA_FALSE;
+
    ewd->wl.registry = wl_display_get_registry(ewd->wl.display);
    wl_registry_add_listener(ewd->wl.registry, &_registry_listener, ewd);
 
index 783c82e..b1df67f 100644 (file)
@@ -115,6 +115,7 @@ struct _Ecore_Wl2_Display
 
    Eina_Bool sync_done : 1;
    Eina_Bool shell_done : 1;
+   Eina_Bool recovering : 1;
 };
 
 struct _Ecore_Wl2_Subsurface
index 824988f..b23fb25 100644 (file)
@@ -1033,6 +1033,10 @@ EAPI Ecore_Wl2_Display *
 ecore_wl2_window_display_get(const Ecore_Wl2_Window *window)
 {
    EINA_SAFETY_ON_NULL_RETURN_VAL(window, NULL);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(window->display, NULL);
+
+   if (window->display->recovering) return EINA_FALSE;
+
    return window->display;
 }