subsurface: Remove obsolete cache implementation 87/315787/1
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 21 Aug 2024 23:42:59 +0000 (08:42 +0900)
committerSeunghun Lee <shiin@samsung.com>
Wed, 4 Dec 2024 23:45:12 +0000 (08:45 +0900)
The cache implementation is outdated since it has been handled by libds.

Change-Id: Ia29d849a0b44df870206c7bfd14e76ed6e2b8a34

src/bin/server/e_comp_wl.c
src/bin/server/e_comp_wl_intern.h
src/bin/server/e_comp_wl_subsurface.c
src/bin/server/e_compositor.c
src/include/e_comp_wl.h

index c5641608a8efd54741900d2cc58288e4ef5b4941..c633d54a1b184095a0a1950f0f758bff7662057d 100644 (file)
@@ -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)
index b6fe53bf146678cdd0f2840d66bfdb7a5ba33653..e89deca1740ab5fa3c13b0b3c02f8d278f53d241 100644 (file)
@@ -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);
index ce51da01014e019056267049993b834976f1ab02..c9134e7f5a0571c9876715505fbf60c66b7a471a 100644 (file)
@@ -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)
 {
index cf6b70045475b86dbd95ff89172da3bf513d2f6f..49a7bbff052a6b59363cbc811ae8954d684bf983 100644 (file)
@@ -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))
      {
index 891233f7003525798b514486c157cd921693ee92..35ec8f4d9fc3b8c019ba29546cb1cfd2efcf13ee 100644 (file)
@@ -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);