e_comp_wl_rsm: add e_comp_wl_remote_surface_consumers_get 37/235637/4
authorChangyeon Lee <cyeon.lee@samsung.com>
Thu, 4 Jun 2020 08:50:48 +0000 (17:50 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Wed, 10 Jun 2020 04:43:13 +0000 (13:43 +0900)
Change-Id: Ia8a059bf4692c85384d064b48543991310e48145

src/bin/e_comp_wl_rsm.c
src/bin/e_comp_wl_rsm.h

index d2ec7acd705dc2a61a5dc124ebcd69bb9b4d2d35..278fdbda720a26eeaae8f7be8604ebe6e72ab0b4 100644 (file)
@@ -3520,6 +3520,35 @@ e_comp_wl_remote_surface_providers_get(E_Client *ec)
    return provs;
 }
 
+/**
+ * Get a list of e_clients of tizen remote surface consumers which use given ec
+ * NB: caller must free returned Eina_List object after using it.
+ */
+E_API Eina_List *
+e_comp_wl_remote_surface_consumers_get(E_Client *ec)
+{
+   Eina_List *consumer_ec_l = NULL; /* result list */
+   E_Client *consumer_ec;
+   E_Comp_Wl_Remote_Surface *rs;
+   E_Comp_Wl_Remote_Provider *provider;
+   Eina_List *l;
+
+   provider = _remote_provider_find(ec);
+   if (!provider) return NULL;
+
+   EINA_LIST_FOREACH(provider->common.surfaces, l, rs)
+     {
+        consumer_ec = rs->ec;
+        if (!consumer_ec) consumer_ec = rs->bind_ec;
+        if (!consumer_ec) continue;
+        if (!consumer_ec->remote_surface.consumer) continue;
+
+        consumer_ec_l = eina_list_append(consumer_ec_l, consumer_ec);
+     }
+
+   return consumer_ec_l;
+}
+
 #undef E_CLIENT_HOOK_APPEND
 #define E_CLIENT_HOOK_APPEND(l, t, cb, d) \
   do                                      \
index 0e04edfcea8ef5b599823ef56730a835580a68d1..13030694a2b93d0a932101b1821c17c097ee1e55 100644 (file)
@@ -20,6 +20,12 @@ E_API   E_Client  *e_comp_wl_remote_surface_bound_provider_ec_get(E_Client *ec);
  */
 E_API   Eina_List *e_comp_wl_remote_surface_providers_get(E_Client *ec);
 
+/**
+ * Get a list of e_clients of tizen remote surface consumers which use given ec
+ * NB: caller must free returned Eina_List object after using it.
+ */
+E_API   Eina_List *e_comp_wl_remote_surface_consumers_get(E_Client *ec);
+
 E_API extern int E_EVENT_REMOTE_SURFACE_PROVIDER_VISIBILITY_CHANGE;
 
 struct _E_Event_Remote_Surface_Provider