From: Shawn Lee Date: Tue, 27 Aug 2024 13:32:55 +0000 (+0900) Subject: compositor: Extract function for readability X-Git-Tag: accepted/tizen/unified/20240828.164022~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F58%2F316758%2F1;p=platform%2Fupstream%2Fenlightenment.git compositor: Extract function for readability Change-Id: I9a33c48fedb68d7e3d945ea0546dd84ec485b50b --- diff --git a/src/bin/server/e_compositor.c b/src/bin/server/e_compositor.c index 0a82cc0..dc45cb4 100644 --- a/src/bin/server/e_compositor.c +++ b/src/bin/server/e_compositor.c @@ -1184,28 +1184,38 @@ _frame_callback_cb_destroy(struct wl_listener *listener, void *data) free(frame_callback); } +static Eina_Bool +_e_surface_pending_frame_callback_add(E_Surface *surface, struct wl_resource *resource) +{ + E_Frame_Callback *frame_callback; + + frame_callback = E_NEW(E_Frame_Callback, 1); + if (!frame_callback) + return EINA_FALSE; + + frame_callback->surface = surface; + + frame_callback->destroy.notify = _frame_callback_cb_destroy; + wl_resource_add_destroy_listener(resource, &frame_callback->destroy); + + surface->base.pending.frames = eina_list_prepend(surface->base.pending.frames, resource); + + return EINA_TRUE; +} + static void _e_surface_pending_frame_callback_update(E_Surface *surface) { struct ds_surface *ds_surface = surface->ds_surface; - E_Frame_Callback *frame_callback; struct wl_resource *resource, *tmp; wl_resource_for_each_safe(resource, tmp, &ds_surface->current.frame_callback_list) { - frame_callback = E_NEW(E_Frame_Callback, 1); - if (!frame_callback) - continue; - - frame_callback->surface = surface; - - frame_callback->destroy.notify = _frame_callback_cb_destroy; - wl_resource_add_destroy_listener(resource, &frame_callback->destroy); - - surface->base.pending.frames = eina_list_prepend(surface->base.pending.frames, resource); - - wl_list_remove(wl_resource_get_link(resource)); - wl_list_init(wl_resource_get_link(resource)); + if (_e_surface_pending_frame_callback_add(surface, resource)) + { + wl_list_remove(wl_resource_get_link(resource)); + wl_list_init(wl_resource_get_link(resource)); + } } }