EAPI Eina_Bool ecore_wl2_window_resizing_get(Ecore_Wl2_Window *window);
+/**
+ * Latch window state at the start of an update
+ *
+ * When async render takes place we continue to dispatch wayland
+ * events from the main loop. We need to defer any changes to
+ * window state from those events until the update is complete.
+ *
+ * Events deferred during an update will automatically fire
+ * immediately after the caller calls ecore_wl2_window_commit.
+ *
+ * @param window
+ * @since 1.21
+ */
+EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window);
+
# endif
# undef EAPI
unsigned int count;
} wm_rot;
Eina_Bool has_buffer : 1;
+ Eina_Bool updating : 1;
};
struct _Ecore_Wl2_Output
wl_surface_commit(window->surface);
ecore_wl2_display_flush(window->display);
}
+ window->updating = EINA_FALSE;
}
EAPI Eina_Bool
return window->req_config.resizing;
}
+
+EAPI void ecore_wl2_window_update_begin(Ecore_Wl2_Window *window)
+{
+ EINA_SAFETY_ON_NULL_RETURN(window);
+ EINA_SAFETY_ON_TRUE_RETURN(window->updating);
+
+ window->updating = EINA_TRUE;
+}
if (!ecore_wl2_window_shell_surface_exists(wdata->win)) return;
+ ecore_wl2_window_update_begin(wdata->win);
if (wdata->win->zxdg_configure_ack && wdata->win->req_config.serial &&
(wdata->win->req_config.serial != wdata->win->set_config.serial))
wdata->win->zxdg_configure_ack(wdata->win->zxdg_surface,