e_comp_wl_buffer: Move implementation of buffer damage region
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 21 Aug 2024 09:15:26 +0000 (18:15 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Thu, 29 Aug 2024 06:50:57 +0000 (15:50 +0900)
This is to separate implementation related to e_comp_wl_buffer out from
e_comp_wl.c to e_comp_wl_buffer.c file.

src/bin/server/e_comp_wl.c
src/bin/server/e_comp_wl_buffer.c
src/bin/server/e_comp_wl_buffer_intern.h

index 598007fccec3a98914af19788e9512c749ba5600..3116fe79789330545766a4d7611cb7dff6a89918 100644 (file)
@@ -2209,35 +2209,6 @@ _e_comp_wl_evas_cb_focus_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *ob
    _e_comp_wl_input_thread_focus_out(&surface);
 }
 
-static void
-_e_comp_wl_buffer_damage_set(E_Comp_Wl_Buffer *buffer, pixman_region32_t *buffer_damages)
-{
-   pixman_box32_t *dmg;
-   Eina_Rectangle damage_rect;
-
-   if (buffer->type != E_COMP_WL_BUFFER_TYPE_NATIVE &&
-       buffer->type != E_COMP_WL_BUFFER_TYPE_TBM)
-     return;
-
-   if (!buffer->tbm_surface) return;
-
-   if (!buffer_damages || !pixman_region32_not_empty(buffer_damages))
-     {
-        EINA_RECTANGLE_SET(&damage_rect, 0, 0, buffer->w, buffer->h);
-     }
-   else
-     {
-        dmg = pixman_region32_extents(buffer_damages);
-        EINA_RECTANGLE_SET(&damage_rect, dmg->x1, dmg->y1, (dmg->x2 - dmg->x1), (dmg->y2 - dmg->y1));
-     }
-
-   tbm_surface_internal_set_damage(buffer->tbm_surface,
-                                   damage_rect.x,
-                                   damage_rect.y,
-                                   damage_rect.w,
-                                   damage_rect.h);
-}
-
 static void
 _e_comp_wl_client_evas_init(E_Client *ec)
 {
@@ -2774,7 +2745,7 @@ _e_comp_wl_surface_damage_update(E_Client *ec)
      }
 
    if (buffer)
-     _e_comp_wl_buffer_damage_set(buffer, e_surface_buffer_damage_get(surface));
+     e_comp_wl_buffer_damage_region_set(buffer, e_surface_buffer_damage_get(surface));
 
    if (e_surface_viewport_changed_get(surface) ||
        !e_comp->wl_comp_data->available_hw_accel.underlay ||
index a5a3e664c6f0b722f4a959d73904c12f3a64ef8e..3d7c19128e5f253268696895d1bd26fa8d174f15 100644 (file)
@@ -146,6 +146,30 @@ e_comp_wl_buffer_size_get(E_Comp_Wl_Buffer *comp_buffer, int32_t *width, int32_t
    if (height) *height = comp_buffer->h;
 }
 
+EINTERN void
+e_comp_wl_buffer_damage_region_set(E_Comp_Wl_Buffer *buffer, pixman_region32_t *damage)
+{
+   pixman_box32_t *box;
+   Eina_Rectangle rect;
+
+   if ((buffer->type != E_COMP_WL_BUFFER_TYPE_NATIVE &&
+        buffer->type != E_COMP_WL_BUFFER_TYPE_TBM) ||
+       (!buffer->tbm_surface))
+     return;
+
+   if (!damage || !pixman_region32_not_empty(damage))
+     {
+        EINA_RECTANGLE_SET(&rect, 0, 0, buffer->w, buffer->h);
+     }
+   else
+     {
+        box = pixman_region32_extents(damage);
+        EINA_RECTANGLE_SET(&rect, box->x1, box->y1, (box->x2 - box->x1), (box->y2 - box->y1));
+     }
+
+   tbm_surface_internal_set_damage(buffer->tbm_surface, rect.x, rect.y, rect.w, rect.h);
+}
+
 static void
 _e_comp_wl_buffer_ref(E_Comp_Wl_Buffer *base)
 {
index fa1b76a60d824cb32bb652d4f9e55cb90eabed4e..ceb0b20fa0a5fed0822c878f90c5cd927b7e6ff4 100644 (file)
@@ -5,11 +5,13 @@
 
 #include <libds/types/ds_buffer.h>
 #include <tbm_surface.h>
+#include <pixman.h>
 
 E_Comp_Wl_Buffer *e_comp_wl_buffer_try_get(struct ds_buffer *ds_buffer);
 E_Comp_Wl_Buffer *e_comp_wl_buffer_create_with_tbm_surface(tbm_surface_h tbm_surface);
 void e_comp_wl_buffer_destroy(E_Comp_Wl_Buffer *comp_buffer);
 void *e_comp_wl_buffer_single_pixel_buffer_data_get(E_Comp_Wl_Buffer *buffer);
 void e_comp_wl_buffer_size_get(E_Comp_Wl_Buffer *comp_buffer, int32_t *width, int32_t *height);
+void e_comp_wl_buffer_damage_region_set(E_Comp_Wl_Buffer *buffer, pixman_region32_t *damage);
 
 #endif