e_hwc: add e_client_hwc_on_plane function 45/215645/3
authorSooChan Lim <sc1.lim@samsung.com>
Fri, 11 Oct 2019 04:40:03 +0000 (13:40 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Mon, 14 Oct 2019 03:58:22 +0000 (12:58 +0900)
This function return if the e_client is on the plane or not.

Change-Id: I462a4ac476ba152da20023070330f444612c7d5f

src/bin/e_hwc.c
src/bin/e_hwc.h

index 398bb8ca429c6ffb4af13e5c3d227f6c71c944a5..261bbea9765b4d66cee564d529027032c2cc2494 100644 (file)
@@ -756,3 +756,44 @@ e_client_hwc_property_set(E_Client *ec, unsigned int id, hwc_value value)
 
    return EINA_TRUE;
 }
+
+E_API Eina_Bool
+e_client_hwc_on_plane(E_Client *ec)
+{
+   E_Output *output = NULL;
+   E_Plane *plane = NULL;
+   E_Client *plane_ec = NULL;
+   E_Hwc_Window *hwc_window;
+   Eina_List *l = NULL;
+   Eina_Bool ret = EINA_FALSE;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(ec->zone, EINA_FALSE);
+
+   output = e_output_find(ec->zone->output_id);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE);
+
+   if (e_hwc_policy_get(output->hwc) == E_HWC_POLICY_PLANES)
+     {
+        EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE);
+
+        EINA_LIST_FOREACH(output->planes, l, plane)
+          {
+              plane_ec = e_plane_ec_get(plane);
+              if (plane_ec == ec)
+                {
+                   ret = EINA_TRUE;
+                   break;
+                }
+          }
+     }
+   else
+     {
+        hwc_window = ec->hwc_window;
+        EINA_SAFETY_ON_NULL_RETURN_VAL(hwc_window, EINA_FALSE);
+
+        ret = e_hwc_window_is_on_hw_overlay(hwc_window);
+     }
+
+   return ret;
+}
index 1d4a7f4aa461e9685dcd4c130e8f2761e34fcf79..905f73476cf86f01b41326ff446ced36bd4c9e28 100644 (file)
@@ -168,5 +168,7 @@ E_API Eina_Bool               e_client_hwc_available_properties_get(E_Client *ec
 E_API Eina_Bool               e_client_hwc_property_get(E_Client *ec, unsigned int id, hwc_value *value);
 E_API Eina_Bool               e_client_hwc_property_set(E_Client *ec, unsigned int id, hwc_value value);
 
+E_API Eina_Bool               e_client_hwc_on_plane(E_Client *ec);
+
 #endif
 #endif