e_comp_wl_buffer: Move implementation of buffer damage region 90/315790/1
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 21 Aug 2024 09:15:26 +0000 (18:15 +0900)
committerSeunghun Lee <shiin@samsung.com>
Wed, 4 Dec 2024 23:45:29 +0000 (08:45 +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.

Change-Id: Id011110f650f1f276cbfa63c445c8e7c0cfa1410

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 76f4594e301d07831eb96d4e997b12e2f4ab86c2..c4c76b937962070e9aeac2f3119f4d045cde35d2 100644 (file)
@@ -2370,35 +2370,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)
 {
@@ -2939,7 +2910,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_get()->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