e_hwc: make e_hwc_canvas_size_get
authorSooChan Lim <sc1.lim@samsung.com>
Tue, 10 Dec 2024 09:06:24 +0000 (18:06 +0900)
committerJunseok Kim <juns.kim@samsung.com>
Fri, 13 Dec 2024 05:15:52 +0000 (14:15 +0900)
use it

Change-Id: I4edb066dd6ae1da1f70f7754546064b56a70fd3a

src/bin/displaymgr/e_hwc.c
src/bin/displaymgr/e_hwc_intern.h
src/bin/displaymgr/e_hwc_window.c
src/bin/displaymgr/e_hwc_windows.c
src/bin/displaymgr/e_output.c

index 55b3440c66007d4df4af22e09a14258101e92b3d..1eb5e8e902db843b70281afa93c953ae7b871adc 100644 (file)
@@ -398,6 +398,21 @@ e_hwc_norender_get(E_Hwc *hwc)
    return hwc->norender;
 }
 
+EINTERN void
+e_hwc_canvas_size_get(E_Hwc *hwc, int *w, int *h)
+{
+   E_Hwc_Window_Target *target_hwc_window;
+   E_Canvas *canvas;
+
+   EINA_SAFETY_ON_FALSE_RETURN(hwc);
+   EINA_SAFETY_ON_FALSE_RETURN(hwc->target_hwc_window);
+   target_hwc_window = hwc->target_hwc_window;
+   EINA_SAFETY_ON_FALSE_RETURN(target_hwc_window->canvas);
+   canvas = target_hwc_window->canvas;
+
+   e_canvas_size_get(canvas, w, h);
+}
+
 static const char *
 _e_hwc_prop_name_get_by_id(E_Hwc *hwc, unsigned int id)
 {
index ebb5b7897d9f1adf2d844fbf32f091923d7f0a47..3564589c03fefc9c7ff34002925bb810075436d3 100644 (file)
@@ -51,9 +51,6 @@ struct _E_Hwc
    E_Hwc_Mode           hwc_mode;
    Eina_Bool            hwc_deactive : 1; // deactive hwc policy
 
-   Ecore_Evas          *ee;
-   Evas                *evas;
-
    Eina_Bool            primary_output;
 
    /* variables for hwc_windows policy  */
@@ -181,6 +178,8 @@ EINTERN void        e_hwc_norender_push(E_Hwc *hwc);
 EINTERN void        e_hwc_norender_pop(E_Hwc *hwc);
 EINTERN int         e_hwc_norender_get(E_Hwc *hwc);
 
+EINTERN void        e_hwc_canvas_size_get(E_Hwc *hwc, int *w, int *h);
+
 EINTERN tbm_surface_queue_h   e_hwc_tbm_surface_queue_get(E_Hwc *hwc);
 EINTERN void                 *e_hwc_gbm_surface_get(E_Hwc *hwc, int *width, int *height, int *format);
 
index e1ad172cb3179b1b7975765ef26ac03646601b3e..bda6b5f66deb393b5a86cc91dd753acd14ca7fc5 100644 (file)
@@ -3734,13 +3734,18 @@ e_hwc_window_client_geometry_visible_get(E_Hwc_Window *hwc_window)
    int x1, x2, y1, y2;
    E_Map *map;
    E_View *view;
+   E_Hwc *hwc;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(hwc_window, EINA_FALSE);
 
    ec = hwc_window->ec;
    if (!ec) return EINA_FALSE;
 
-   ecore_evas_geometry_get(e_comp->ee, NULL, NULL, &ee_w, &ee_h);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(hwc_window->hwc, EINA_FALSE);
+
+   hwc = hwc_window->hwc;
+
+   e_hwc_canvas_size_get(hwc, &ee_w, &ee_h);
    e_client_geometry_get(ec, &x, &y, &w, &h);
 
    view = e_view_client_view_get(e_client_view_get(ec));
index e4dcdbb8665fa2c11004f961d76aa6bc0c77aef1..07be673d6841bfa4a03d7a113f7138e506498ac4 100644 (file)
@@ -878,7 +878,7 @@ _e_hwc_windows_visible_windows_list_get(E_Hwc *hwc)
    Eina_Bool qps_visible;
    Eina_Bool blur_visible = EINA_FALSE;
 
-   ecore_evas_geometry_get(e_comp_ee_get(), NULL, NULL, &ee_w, &ee_h);
+   e_hwc_canvas_size_get(hwc, &ee_w, &ee_h);
    qps_visible = e_qps_visible_get();
 
    for (o = evas_object_top_get(e_comp_evas_get()); o; o = evas_object_below_get(o))
index f339809aee3d3217610d7e1a6a4adfb52adb9855..8daffdf324db554c652ff3f366c4738e531c63e2 100644 (file)
@@ -506,16 +506,21 @@ _e_output_render_update(E_Output *output)
 static void
 _e_output_force_render_set(E_Output *output)
 {
+   E_Hwc_Window_Target *target_hwc_window;
    int w, h;
 
    EINA_SAFETY_ON_NULL_RETURN(output);
+   EINA_SAFETY_ON_NULL_RETURN(output->hwc);
+   EINA_SAFETY_ON_NULL_RETURN(output->hwc->target_hwc_window);
 
    if (output->force_render)
      return;
 
    e_output_size_get(output, &w, &h);
    e_comp_override_add();
-   evas_damage_rectangle_add(output->hwc->evas, 0, 0, w, h);
+
+   target_hwc_window = output->hwc->target_hwc_window;
+   e_hwc_windows_target_window_force_render(target_hwc_window);
 
    output->force_render = EINA_TRUE;
    EOINF("force render set", output);