Ecore_Event_Handler *hvchange;
#if defined(WAYLAND)
Ecore_Event_Handler *hlower;
+ Ecore_Event_Handler *hpvchange;
#endif
Ecore_Event_Handler *hcmsg; /* WM_ROTATE */
}
+#if defined(WAYLAND)
+static Eina_Bool __pre_visibility_cb(void *data, int type, void *event)
+{
+ Ecore_Wl_Event_Window_Pre_Visibility_Change *ev = event;
+ bool bvisibility;
+
+ if (ev && ev->type == ECORE_WL_WINDOW_VISIBILITY_TYPE_PRE_UNOBSCURED) {
+ __update_win((unsigned int)ev->win, 0, false);
+ bvisibility = __check_visible();
+ _DBG("bvisibility %d, b_active %d", bvisibility, b_active);
+ if (bvisibility && b_active == FALSE) {
+ _DBG("Go to Resume state\n");
+ b_active = TRUE;
+ __do_app(AE_RESUME, data, NULL);
+ }
+ }
+
+ return ECORE_CALLBACK_RENEW;
+}
+#endif
+
#if defined(X11)
/* WM_ROTATE */
static Eina_Bool __cmsg_cb(void *data, int type, void *event)
ui->hlower =
ecore_event_handler_add(ECORE_WL_EVENT_WINDOW_LOWER,
__lower_cb, ui);
+ ui->hpvchange = ecore_event_handler_add(ECORE_WL_EVENT_WINDOW_PRE_VISIBILITY_CHANGE,
+ __pre_visibility_cb, ui);
#elif defined(X11)
ui->hshow =
ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHOW, __show_cb, ui);
#if defined(WAYLAND)
if (ui->hlower)
ecore_event_handler_del(ui->hlower);
+ if (ui->hpvchange)
+ ecore_event_handler_del(ui->hpvchange);
#endif
__appcore_timer_del(ui);