if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
}
+void
+_ecore_evas_wl_common_frame_callback_clean(Ecore_Evas *ee)
+{
+ Ecore_Evas_Engine_Wl_Data *wdata;
+
+ wdata = ee->engine.data;
+
+ if (!wdata->frame_pending)
+ return;
+ wl_callback_destroy(wdata->frame_callback);
+ wdata->frame_callback = NULL;
+ wdata->frame_pending = EINA_FALSE;
+}
+
static void
-_ecore_evas_wl_frame_complete(void *data, struct wl_callback *callback, uint32_t tm EINA_UNUSED)
+_ecore_evas_wl_frame_complete(void *data, struct wl_callback *callback EINA_UNUSED, uint32_t tm EINA_UNUSED)
{
Ecore_Evas *ee = data;
Ecore_Wl_Window *win = NULL;
Ecore_Evas_Engine_Wl_Data *wdata;
if (!ee) return;
+
+ _ecore_evas_wl_common_frame_callback_clean(ee);
+
wdata = ee->engine.data;
if (!(win = wdata->win)) return;
- wdata->frame_callback = NULL;
- wdata->frame_pending = EINA_FALSE;
- wl_callback_destroy(callback);
-
if (ecore_wl_window_surface_get(win))
{
wdata->frame_callback =
void _ecore_evas_wl_common_borderless_set(Ecore_Evas *ee, int borderless);
void _ecore_evas_wl_common_withdrawn_set(Ecore_Evas *ee, int val);
+void _ecore_evas_wl_common_frame_callback_clean(Ecore_Evas *ee);
+
Evas_Object * _ecore_evas_wl_common_frame_add(Evas *evas);
void _ecore_evas_wl_common_frame_border_size_set(Evas_Object *obj, int fx, int fy, int fw, int fh);