From: Seunghun Lee Date: Wed, 21 Aug 2024 23:42:59 +0000 (+0900) Subject: subsurface: Remove obsolete cache implementation X-Git-Tag: accepted/tizen/unified/20241206.132905~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F87%2F315787%2F1;p=platform%2Fupstream%2Fenlightenment.git subsurface: Remove obsolete cache implementation The cache implementation is outdated since it has been handled by libds. Change-Id: Ia29d849a0b44df870206c7bfd14e76ed6e2b8a34 --- diff --git a/src/bin/server/e_comp_wl.c b/src/bin/server/e_comp_wl.c index c5641608a8..c633d54a1b 100644 --- a/src/bin/server/e_comp_wl.c +++ b/src/bin/server/e_comp_wl.c @@ -4769,7 +4769,7 @@ e_comp_wl_sub_data_cached_buffer_viewport_get(E_Client *ec) if (!ec->comp_data) return NULL; if (!ec->comp_data->sub.data) return NULL; - return &ec->comp_data->sub.data->cached.buffer_viewport; + return NULL; } E_API void @@ -4779,7 +4779,7 @@ e_comp_wl_sub_data_cached_buffer_viewport_set(E_Client *ec, E_Comp_Wl_Buffer_Vie EINA_SAFETY_ON_NULL_RETURN(ec->comp_data); EINA_SAFETY_ON_NULL_RETURN(ec->comp_data->sub.data); - ec->comp_data->sub.data->cached.buffer_viewport = *vp; + // Deprecated } E_API E_Client * @@ -6038,12 +6038,6 @@ e_comp_wl_surface_state_init(E_Comp_Wl_Surface_State *state, int w, int h) _e_comp_wl_surface_state_init(state, w, h); } -EINTERN void -e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state) -{ - _e_comp_wl_surface_state_commit(ec, state); -} - EINTERN void e_comp_wl_hook_call(E_Comp_Wl_Hook_Point hookpoint, E_Client *ec) { @@ -6056,12 +6050,6 @@ e_comp_wl_surface_state_finish(E_Comp_Wl_Surface_State *state) _e_comp_wl_surface_state_finish(state); } -EINTERN void -e_comp_wl_surface_state_buffer_set(E_Comp_Wl_Surface_State *state, E_Comp_Wl_Buffer *buffer) -{ - _e_comp_wl_surface_state_buffer_set(state, buffer); -} - static void buffer_transform(int width, int height, uint32_t transform, int32_t scale, int sx, int sy, int *dx, int *dy) diff --git a/src/bin/server/e_comp_wl_intern.h b/src/bin/server/e_comp_wl_intern.h index b6fe53bf14..e89deca174 100644 --- a/src/bin/server/e_comp_wl_intern.h +++ b/src/bin/server/e_comp_wl_intern.h @@ -66,9 +66,7 @@ EINTERN Eina_Bool e_comp_wl_commit_sync_client_geometry_add(E_Client *ec, uint32 EINTERN Eina_Bool e_comp_wl_commit_sync_configure(E_Client *ec); EINTERN void e_comp_wl_surface_state_init(E_Comp_Wl_Surface_State *state, int w, int h); -EINTERN void e_comp_wl_surface_state_commit(E_Client *ec, E_Comp_Wl_Surface_State *state); EINTERN void e_comp_wl_surface_state_finish(E_Comp_Wl_Surface_State *state); -EINTERN void e_comp_wl_surface_state_buffer_set(E_Comp_Wl_Surface_State *state, E_Comp_Wl_Buffer *buffer); EINTERN Eina_Bool e_comp_wl_surface_viewport_get(E_Client *ec, Eina_Rectangle *buffer_viewport, Eina_Rectangle *output_viewport, unsigned int *transform); EINTERN Eina_Bool e_comp_wl_surface_role_set(E_Client *ec, const char *role_name, struct wl_resource *error_resource, uint32_t error_code); EINTERN const char *e_comp_wl_surface_role_get(E_Client *ec); diff --git a/src/bin/server/e_comp_wl_subsurface.c b/src/bin/server/e_comp_wl_subsurface.c index ce51da0101..c9134e7f5a 100644 --- a/src/bin/server/e_comp_wl_subsurface.c +++ b/src/bin/server/e_comp_wl_subsurface.c @@ -24,8 +24,6 @@ static Eina_List *handlers = NULL; static E_Comp_Wl_Subsurf_Data *_e_comp_wl_subsurface_data_get(E_Client *ec); -static void _e_comp_wl_subsurface_commit_to_cache(E_Client *ec); -static void _e_comp_wl_subsurface_commit_from_cache(E_Client *ec); static void _e_comp_wl_subsurface_stack_update(E_Client *ec); static void @@ -134,15 +132,12 @@ _subsurface_data_parent_unset(E_Comp_Wl_Subsurf_Data *sdata) EINTERN void e_comp_wl_subsurface_data_init(E_Comp_Wl_Subsurf_Data *sdata, E_Client *ec, E_Client *parent, E_Client *offscreen_parent) { - sdata->cached_buffer_ref.buffer = NULL; sdata->synchronized = EINA_TRUE; sdata->parent = parent; sdata->remote_surface.offscreen_parent = offscreen_parent; if (offscreen_parent) ELOGF("SUBSURFACE", " |offscreen_parent:%p", ec, offscreen_parent); - e_comp_wl_surface_state_init(&sdata->cached, ec->w, ec->h); - _e_comp_wl_client_subsurface_set(ec, sdata); _e_comp_wl_client_subsurface_parent_set(ec, parent); @@ -153,8 +148,6 @@ EINTERN void e_comp_wl_subsurface_data_finish(E_Comp_Wl_Subsurf_Data *sdata) { _subsurface_data_parent_unset(sdata); - e_comp_wl_surface_state_finish(&sdata->cached); - e_comp_wl_buffer_reference(&sdata->cached_buffer_ref, NULL); } EINTERN void @@ -163,18 +156,6 @@ e_comp_wl_subsurface_data_parent_unset(E_Comp_Wl_Subsurf_Data *sdata) _subsurface_data_parent_unset(sdata); } -EINTERN void -e_comp_wl_client_subsurface_commit_to_cache(E_Client *ec) -{ - _e_comp_wl_subsurface_commit_to_cache(ec); -} - -EINTERN void -e_comp_wl_client_subsurface_commit_from_cache(E_Client *ec) -{ - _e_comp_wl_subsurface_commit_from_cache(ec); -} - static void _e_comp_wl_subsurface_restack(E_Client *ec) { @@ -427,117 +408,6 @@ _e_comp_wl_subsurface_order_commit(E_Client *ec) return EINA_TRUE; } -static void -_e_comp_wl_subsurface_commit_to_cache(E_Client *ec) -{ - E_Comp_Wl_Client_Data *cdata; - E_Comp_Wl_Subsurf_Data *sdata; - struct wl_resource *cb; - Eina_List *l, *ll; - Eina_Iterator *itr; - Eina_Rectangle *rect; - - if (!(cdata = ec->comp_data)) return; - - sdata = _e_comp_wl_subsurface_data_get(ec); - EINA_SAFETY_ON_NULL_RETURN(sdata); - - DBG("Subsurface Commit to Cache"); - - /* move pending damage to cached */ - EINA_LIST_FOREACH_SAFE(cdata->pending.damages, l, ll, rect) - eina_list_move_list(&sdata->cached.damages, &cdata->pending.damages, l); - - EINA_LIST_FOREACH_SAFE(cdata->pending.buffer_damages, l, ll, rect) - eina_list_move_list(&sdata->cached.buffer_damages, &cdata->pending.buffer_damages, l); - - if (cdata->pending.new_attach) - { - sdata->cached.new_attach = EINA_TRUE; - e_comp_wl_surface_state_buffer_set(&sdata->cached, - cdata->pending.buffer); - e_comp_wl_buffer_reference(&sdata->cached_buffer_ref, - cdata->pending.buffer); - } - - sdata->cached.sx = cdata->pending.sx; - sdata->cached.sy = cdata->pending.sy; - /* sdata->cached.buffer = cdata->pending.buffer; */ - - /* When subsurface is sync mode, the commit of subsurface can happen before - * a parent surface is committed. In this case, we can't show a attached - * buffer on screen. - */ - //sdata->cached.new_attach = cdata->pending.new_attach; - - sdata->cached.buffer_viewport.changed |= cdata->pending.buffer_viewport.changed; - sdata->cached.buffer_viewport.buffer = cdata->pending.buffer_viewport.buffer; - sdata->cached.buffer_viewport.surface = cdata->pending.buffer_viewport.surface; - - e_comp_wl_surface_state_buffer_set(&cdata->pending, NULL); - cdata->pending.sx = 0; - cdata->pending.sy = 0; - cdata->pending.new_attach = EINA_FALSE; - cdata->pending.buffer_viewport.changed = 0; - - /* copy cdata->pending.opaque into sdata->cached.opaque */ - itr = eina_tiler_iterator_new(cdata->pending.opaque); - EINA_ITERATOR_FOREACH(itr, rect) - eina_tiler_rect_add(sdata->cached.opaque, rect); - eina_iterator_free(itr); - - /* repeat for input */ - itr = eina_tiler_iterator_new(cdata->pending.input); - EINA_ITERATOR_FOREACH(itr, rect) - eina_tiler_rect_add(sdata->cached.input, rect); - eina_iterator_free(itr); - - EINA_LIST_FOREACH_SAFE(cdata->pending.frames, l, ll, cb) - { - if (cb) - eina_list_move_list(&sdata->cached.frames, - &cdata->pending.frames, - l); - } - - sdata->cached.has_data = EINA_TRUE; -} - -static void -_e_comp_wl_subsurface_commit_from_cache(E_Client *ec) -{ - E_Comp_Wl_Subsurf_Data *sdata; - E_Alpha_Mask_Rect *rect; - - sdata = _e_comp_wl_subsurface_data_get(ec); - EINA_SAFETY_ON_NULL_RETURN(sdata); - - DBG("Subsurface Commit from Cache"); - - e_comp_wl_surface_state_commit(ec, &sdata->cached); - - if (!e_view_client_damage_exists(e_client_view_get(ec))) - { - if ((ec->comp_data->video_client) || - (!e_client_video_hw_composition_check(ec))) - e_pixmap_image_clear(ec->pixmap, 1); - } - - e_comp_wl_buffer_reference(&sdata->cached_buffer_ref, NULL); - - if (_e_comp_wl_subsurface_order_commit(ec)) - { - E_Client *topmost = e_comp_wl_topmost_parent_get(ec); - _e_comp_wl_subsurface_restack(topmost); - - rect = e_alpha_mask_rect_try_from_ec(topmost); - if (rect) - e_alpha_mask_rect_restack(rect); - } - - sdata->cached.has_data = EINA_FALSE; -} - static void _e_comp_wl_subsurface_cb_ec_iconify(void *data EINA_UNUSED, E_Client *ec) { diff --git a/src/bin/server/e_compositor.c b/src/bin/server/e_compositor.c index cf6b700454..49a7bbff05 100644 --- a/src/bin/server/e_compositor.c +++ b/src/bin/server/e_compositor.c @@ -76,6 +76,12 @@ struct _E_Subsurface E_Surface *parent; struct ds_subsurface *ds_subsurface; + struct + { + E_Presentation_Time_Container presentation_container; + Eina_Bool has_data; + } cached; + struct wl_listener destroy; struct wl_listener surface_destroy; struct wl_listener parent_surface_destroy; @@ -448,7 +454,6 @@ e_surface_buffer_transform_get(E_Surface *surface) EINTERN Eina_Bool e_surface_buffer_transform_set(E_Surface *surface, enum wl_output_transform transform) { - E_Subsurface *sub; E_Comp_Wl_Buffer_Viewport *vp; EINA_SAFETY_ON_NULL_RETURN_VAL(surface, EINA_FALSE); @@ -462,10 +467,6 @@ e_surface_buffer_transform_set(E_Surface *surface, enum wl_output_transform tran surface->base.pending.buffer_viewport = *vp; - sub = _e_subsurface_try_from_surface(surface); - if (sub) - sub->base.cached.buffer_viewport = *vp; - if (surface->ds_surface) _ds_surface_buffer_transform_set(surface->ds_surface, transform); @@ -481,7 +482,6 @@ e_surface_buffer_try_get(E_Surface *surface) EINTERN Eina_Bool e_surface_viewport_source_box_set(E_Surface *surface, Eina_Rectangle *box) { - E_Subsurface *sub; E_Comp_Wl_Buffer_Viewport *vp; wl_fixed_t fx, fy, fw, fh; @@ -505,10 +505,6 @@ e_surface_viewport_source_box_set(E_Surface *surface, Eina_Rectangle *box) surface->base.pending.buffer_viewport = *vp; - sub = _e_subsurface_try_from_surface(surface); - if (sub) - sub->base.cached.buffer_viewport = *vp; - if (surface->ds_surface) _ds_surface_viewport_source_box_set(surface->ds_surface, box); @@ -518,7 +514,6 @@ e_surface_viewport_source_box_set(E_Surface *surface, Eina_Rectangle *box) EINTERN Eina_Bool e_surface_viewport_destination_set(E_Surface *surface, int32_t width, int32_t height) { - E_Subsurface *sub; E_Comp_Wl_Buffer_Viewport *vp; EINA_SAFETY_ON_NULL_RETURN_VAL(surface, EINA_FALSE); @@ -533,10 +528,6 @@ e_surface_viewport_destination_set(E_Surface *surface, int32_t width, int32_t he surface->base.pending.buffer_viewport = *vp; - sub = _e_subsurface_try_from_surface(surface); - if (sub) - sub->base.cached.buffer_viewport = *vp; - if (surface->ds_surface) _ds_surface_viewport_destination_set(surface->ds_surface, width, height); @@ -1182,7 +1173,6 @@ _frame_callback_cb_destroy(struct wl_listener *listener, void *data) struct wl_resource *resource = data; E_Frame_Callback *frame_callback; E_Surface *surface; - E_Subsurface *subsurface; frame_callback = wl_container_of(listener, frame_callback, destroy); surface = frame_callback->surface; @@ -1193,10 +1183,6 @@ _frame_callback_cb_destroy(struct wl_listener *listener, void *data) if (surface->base.pending.frames) surface->base.pending.frames = eina_list_remove(surface->base.pending.frames, resource); - subsurface = _e_subsurface_try_from_surface(surface); - if (subsurface && subsurface->base.cached.frames) - subsurface->base.cached.frames = eina_list_remove(subsurface->base.cached.frames, resource); - wl_list_remove(&frame_callback->destroy.link); free(frame_callback); } @@ -1441,11 +1427,11 @@ _e_surface_cb_precommit_to_cache(struct wl_listener *listener, void *data) wl_signal_emit(&surface->events.precommit_to_cache, surface); - e_presentation_time_container_feedback_discard(&subsurface->base.cached.presentation_container); - e_presentation_time_container_feedback_merge(&subsurface->base.cached.presentation_container, + e_presentation_time_container_feedback_discard(&subsurface->cached.presentation_container); + e_presentation_time_container_feedback_merge(&subsurface->cached.presentation_container, &surface->base.pending.presentation_container); - subsurface->base.cached.has_data = EINA_TRUE; + subsurface->cached.has_data = EINA_TRUE; e_comp_wl_hook_call(E_COMP_WL_HOOK_SUBSURFACE_COMMIT_TO_CACHE, surface->ec); } @@ -1461,12 +1447,12 @@ _e_surface_cb_precommit_from_cache(struct wl_listener *listener, void *data) wl_signal_emit(&surface->events.precommit_from_cache, surface); - if (subsurface->base.cached.has_data) + if (subsurface->cached.has_data) { e_presentation_time_container_feedback_discard(&surface->base.presentation_container); e_presentation_time_container_feedback_merge(&surface->base.presentation_container, - &subsurface->base.cached.presentation_container); - subsurface->base.cached.has_data = EINA_FALSE; + &subsurface->cached.presentation_container); + subsurface->cached.has_data = EINA_FALSE; } // The _e_subsurface_synchronized_check() should be called, because this @@ -1684,15 +1670,7 @@ _e_subsurface_synchronized_check(E_Subsurface *sub) static void _e_subsurface_commit(E_Subsurface *sub) { - if (sub->base.cached.has_data) - { - e_comp_wl_client_subsurface_commit_to_cache(sub->surface->ec); - e_comp_wl_client_subsurface_commit_from_cache(sub->surface->ec); - } - else - { - e_comp_wl_surface_commit(sub->surface->ec); - } + e_comp_wl_surface_commit(sub->surface->ec); if (_e_subsurface_synchronized_check(sub)) { diff --git a/src/include/e_comp_wl.h b/src/include/e_comp_wl.h index 891233f700..35ec8f4d9f 100644 --- a/src/include/e_comp_wl.h +++ b/src/include/e_comp_wl.h @@ -204,8 +204,8 @@ struct _E_Comp_Wl_Subsurf_Data Eina_Bool set; } position; - E_Comp_Wl_Surface_State cached; - E_Comp_Wl_Buffer_Ref cached_buffer_ref; + EINA_DEPRECATED E_Comp_Wl_Surface_State cached; + EINA_DEPRECATED E_Comp_Wl_Buffer_Ref cached_buffer_ref; Eina_Bool synchronized; Eina_Bool stand_alone; @@ -635,8 +635,8 @@ E_API Eina_List *e_comp_wl_sub_below_list_pending_get(E_Client *ec); E_API Evas_Object *e_comp_wl_sub_below_object_get(E_Client *ec); E_API E_Comp_Wl_Subsurf_Data *e_comp_wl_sub_data_get(E_Client *ec); -E_API E_Comp_Wl_Buffer_Viewport *e_comp_wl_sub_data_cached_buffer_viewport_get(E_Client *ec); -E_API void e_comp_wl_sub_data_cached_buffer_viewport_set(E_Client *ec, E_Comp_Wl_Buffer_Viewport *vp); +EINA_DEPRECATED E_API E_Comp_Wl_Buffer_Viewport *e_comp_wl_sub_data_cached_buffer_viewport_get(E_Client *ec); +EINA_DEPRECATED E_API void e_comp_wl_sub_data_cached_buffer_viewport_set(E_Client *ec, E_Comp_Wl_Buffer_Viewport *vp); E_API E_Client *e_comp_wl_sub_data_parent_get(E_Client *ec); E_API Eina_Bool e_comp_wl_sub_data_position_get(E_Client *ec, int *x, int *y); E_API void e_comp_wl_sub_data_position_set(E_Client *ec, int x, int y);