diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c index d29bb7cfd6..f7f6151fc0 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c @@ -229,6 +229,26 @@ _ecore_evas_wl_common_cb_focus_out(void *data EINA_UNUSED, int type EINA_UNUSED, return ECORE_CALLBACK_PASS_ON; } +static void +_ee_display_unset(Ecore_Evas *ee) +{ + Evas_Engine_Info_Wayland *einfo; + Ecore_Evas_Engine_Wl_Data *wdata; + + einfo = (Evas_Engine_Info_Wayland *)evas_engine_info_get(ee->evas); + if (!einfo) return; + + einfo->info.wl_display = NULL; + einfo->info.wl_surface = NULL; + + wdata = ee->engine.data; + if (!strcmp(ee->driver, "wayland_egl")) + wdata->regen_objs = _evas_canvas_image_data_unset(ecore_evas_get(ee)); + + if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) + WRN("Failed to set Evas Engine Info for '%s'", ee->driver); +} + static Eina_Bool _ecore_evas_wl_common_cb_disconnect(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) { @@ -248,8 +268,7 @@ _ecore_evas_wl_common_cb_disconnect(void *data EINA_UNUSED, int type EINA_UNUSED ee->visible = EINA_FALSE; wdata->reset_pending = 1; ecore_evas_manual_render_set(ee, 1); - if (wdata->display_unset) - wdata->display_unset(ee); + _ee_display_unset(ee); } return ECORE_CALLBACK_RENEW; } @@ -1958,22 +1977,6 @@ _ecore_evas_wl_common_rotation_set(Ecore_Evas *ee, int rotation, int resize) _rotation_do(ee, rotation, resize); } -static void -_ee_egl_display_unset(Ecore_Evas *ee) -{ - Evas_Engine_Info_Wayland *einfo; - Ecore_Evas_Engine_Wl_Data *wdata; - - einfo = (Evas_Engine_Info_Wayland *)evas_engine_info_get(ee->evas); - if (!einfo) return; - - einfo->info.wl_display = NULL; - wdata = ee->engine.data; - wdata->regen_objs = _evas_canvas_image_data_unset(ecore_evas_get(ee)); - if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) - WRN("Failed to set Evas Engine Info for '%s'", ee->driver); -} - static Eina_Bool _ee_cb_sync_done(void *data, int type EINA_UNUSED, void *event EINA_UNUSED) { @@ -2188,8 +2191,6 @@ _ecore_evas_wl_common_new_internal(const char *disp_name, unsigned int parent, i wdata->sync_done = EINA_FALSE; wdata->parent = p; wdata->display = ewd; - if (!strcmp(engine_name, "wayland_egl")) - wdata->display_unset = _ee_egl_display_unset; wdata->win = ecore_wl2_window_new(ewd, p, x, y, w + fw, h + fh); ee->prop.window = ecore_wl2_window_id_get(wdata->win); diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h index b2a5781827..2f98dcf1ab 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h @@ -36,7 +36,6 @@ typedef struct _Ecore_Evas_Engine_Wl_Data Ecore_Evas_Engine_Wl_Data; struct _Ecore_Evas_Engine_Wl_Data { Ecore_Wl2_Display *display; - void (*display_unset)(Ecore_Evas*); Eina_List *regen_objs; Ecore_Wl2_Window *parent, *win; Ecore_Event_Handler *sync_handler;