ecore-evas-wayland: Remove frame callbacks from Ecore_Evas wayland
engine Summary: Frame callbacks are now handled inside the engine itself and are thus not needed here anymore @fix Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
3ebe41af18
commit
b55a24727a
|
@ -46,15 +46,6 @@ static void _ecore_evas_wayland_alpha_do(Ecore_Evas *ee, int alpha);
|
||||||
static void _ecore_evas_wayland_transparent_do(Ecore_Evas *ee, int transparent);
|
static void _ecore_evas_wayland_transparent_do(Ecore_Evas *ee, int transparent);
|
||||||
static void _ecore_evas_wl_common_border_update(Ecore_Evas *ee);
|
static void _ecore_evas_wl_common_border_update(Ecore_Evas *ee);
|
||||||
|
|
||||||
/* Frame listener */
|
|
||||||
static void _ecore_evas_wl_frame_complete(void *data, struct wl_callback *callback, uint32_t tm);
|
|
||||||
|
|
||||||
/* Frame listener */
|
|
||||||
static const struct wl_callback_listener frame_listener =
|
|
||||||
{
|
|
||||||
_ecore_evas_wl_frame_complete,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* local functions */
|
/* local functions */
|
||||||
static void
|
static void
|
||||||
_ecore_evas_wl_common_state_update(Ecore_Evas *ee)
|
_ecore_evas_wl_common_state_update(Ecore_Evas *ee)
|
||||||
|
@ -592,8 +583,6 @@ _ecore_evas_wl_common_free(Ecore_Evas *ee)
|
||||||
|
|
||||||
if (!ee) return;
|
if (!ee) return;
|
||||||
wdata = ee->engine.data;
|
wdata = ee->engine.data;
|
||||||
if (wdata->frame_callback) wl_callback_destroy(wdata->frame_callback);
|
|
||||||
wdata->frame_callback = NULL;
|
|
||||||
if (wdata->win) ecore_wl_window_free(wdata->win);
|
if (wdata->win) ecore_wl_window_free(wdata->win);
|
||||||
wdata->win = NULL;
|
wdata->win = NULL;
|
||||||
free(wdata);
|
free(wdata);
|
||||||
|
@ -1441,42 +1430,6 @@ _ecore_evas_wl_common_post_render(Ecore_Evas *ee)
|
||||||
if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
|
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 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;
|
|
||||||
|
|
||||||
if (ecore_wl_window_surface_get(win))
|
|
||||||
{
|
|
||||||
wdata->frame_callback =
|
|
||||||
wl_surface_frame(ecore_wl_window_surface_get(win));
|
|
||||||
wl_callback_add_listener(wdata->frame_callback, &frame_listener, ee);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
_ecore_evas_wl_common_render(Ecore_Evas *ee)
|
_ecore_evas_wl_common_render(Ecore_Evas *ee)
|
||||||
{
|
{
|
||||||
|
@ -1516,20 +1469,6 @@ _ecore_evas_wl_common_render(Ecore_Evas *ee)
|
||||||
updates = evas_render_updates(ee->evas);
|
updates = evas_render_updates(ee->evas);
|
||||||
rend = _ecore_evas_wl_common_render_updates_process(ee, updates);
|
rend = _ecore_evas_wl_common_render_updates_process(ee, updates);
|
||||||
evas_render_updates_free(updates);
|
evas_render_updates_free(updates);
|
||||||
|
|
||||||
if (!wdata->frame_pending)
|
|
||||||
{
|
|
||||||
if (!wdata->frame_callback)
|
|
||||||
{
|
|
||||||
wdata->frame_callback =
|
|
||||||
wl_surface_frame(ecore_wl_window_surface_get(win));
|
|
||||||
wl_callback_add_listener(wdata->frame_callback,
|
|
||||||
&frame_listener, ee);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rend)
|
|
||||||
wdata->frame_pending = EINA_TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (evas_render_async(ee->evas))
|
else if (evas_render_async(ee->evas))
|
||||||
{
|
{
|
||||||
|
|
|
@ -373,7 +373,6 @@ _ecore_evas_wl_hide(Ecore_Evas *ee)
|
||||||
if (!ee->visible) return;
|
if (!ee->visible) return;
|
||||||
ee->visible = 0;
|
ee->visible = 0;
|
||||||
ee->should_be_visible = 0;
|
ee->should_be_visible = 0;
|
||||||
_ecore_evas_wl_common_frame_callback_clean(ee);
|
|
||||||
|
|
||||||
if (ee->func.fn_hide) ee->func.fn_hide(ee);
|
if (ee->func.fn_hide) ee->func.fn_hide(ee);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,8 +35,6 @@ struct _Ecore_Evas_Engine_Wl_Data
|
||||||
#ifdef BUILD_ECORE_EVAS_WAYLAND_EGL
|
#ifdef BUILD_ECORE_EVAS_WAYLAND_EGL
|
||||||
struct wl_egl_window *egl_win;
|
struct wl_egl_window *egl_win;
|
||||||
#endif
|
#endif
|
||||||
Eina_Bool frame_pending : 1;
|
|
||||||
struct wl_callback *frame_callback;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Ecore_Evas_Interface_Wayland *_ecore_evas_wl_interface_new(void);
|
Ecore_Evas_Interface_Wayland *_ecore_evas_wl_interface_new(void);
|
||||||
|
|
|
@ -366,7 +366,6 @@ _ecore_evas_wl_hide(Ecore_Evas *ee)
|
||||||
if (!ee->visible) return;
|
if (!ee->visible) return;
|
||||||
ee->visible = 0;
|
ee->visible = 0;
|
||||||
ee->should_be_visible = 0;
|
ee->should_be_visible = 0;
|
||||||
_ecore_evas_wl_common_frame_callback_clean(ee);
|
|
||||||
|
|
||||||
if (ee->func.fn_hide) ee->func.fn_hide(ee);
|
if (ee->func.fn_hide) ee->func.fn_hide(ee);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue