e_hwc_window: add checking effect_running flag of the comp object 44/266544/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Mon, 15 Nov 2021 06:01:17 +0000 (15:01 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Mon, 15 Nov 2021 07:33:30 +0000 (16:33 +0900)
effect_running flag is set when object is animating by external module.
hwc should check effect_running flag even if it check animating of
the comp object.

Change-Id: Id53e3ae3dc415c7b1fa314dfb5499aedf79e1d8d

src/bin/e_hwc_window.c
src/bin/e_hwc_windows.c

index 87cf140..b0e4524 100644 (file)
@@ -91,6 +91,7 @@ typedef enum _E_Hwc_Window_Restriction
    E_HWC_WINDOW_RESTRICTION_OBSCURED_BY_TARGET,
    E_HWC_WINDOW_RESTRICTION_IMAGE_FILTER,
    E_HWC_WINDOW_RESTRICTION_DESK_GEOMETRY,
+   E_HWC_WINDOW_RESTRICTION_EFFECT_RUNNING,
 } E_Hwc_Window_Restriction;
 
 static Eina_Bool ehw_trace = EINA_FALSE;
@@ -2064,6 +2065,13 @@ e_hwc_window_device_state_available_update(E_Hwc_Window *hwc_window)
         goto finish;
      }
 
+   if (evas_object_data_get(ec->frame, "effect_running"))
+     {
+        restriction = E_HWC_WINDOW_RESTRICTION_EFFECT_RUNNING;
+        available = EINA_FALSE;
+        goto finish;
+     }
+
    cdata = e_client_cdata_get(ec);
    if ((!cdata) || (!cdata->buffer_ref.buffer))
      {
@@ -2562,6 +2570,8 @@ e_hwc_window_restriction_string_get(E_Hwc_Window *hwc_window)
        return "image filter";
      case E_HWC_WINDOW_RESTRICTION_DESK_GEOMETRY:
        return "desk geometry";
+     case E_HWC_WINDOW_RESTRICTION_EFFECT_RUNNING:
+       return "effect running";
      default:
        return "UNKNOWN";
     }
index a9124d8..de7c40e 100644 (file)
@@ -960,6 +960,7 @@ _e_hwc_windows_client_fully_mask_get(E_Client *ec, int x, int y, int w, int h,
    if (ec->argb) return EINA_FALSE;
    if (!E_CONTAINS(x, y, w, h, 0, 0, ee_w, ee_h)) return EINA_FALSE;
    if (e_comp_object_is_animating(ec->frame)) return EINA_FALSE;
+   if (evas_object_data_get(ec->frame, "effect_running")) return EINA_FALSE;
 
    return EINA_TRUE;
 }