subsurface: Add and use functions for tizen_policy extensions 18/260618/1
authorSeunghun Lee <shiin.lee@samsung.com>
Wed, 23 Jun 2021 05:24:54 +0000 (14:24 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Wed, 30 Jun 2021 00:28:49 +0000 (09:28 +0900)
This is to seperate sub-surface code out from e_policy_wl.c file.

Change-Id: I65d84ce69dbe2c4effa5bfcf88452933d5df57c3

src/bin/e_comp_wl_subsurface.c
src/bin/e_comp_wl_subsurface.h
src/bin/e_policy_wl.c

index 0e4dde2eded5dece18c2bb07a370920405f71470..beb09f672ea2b1c5a2e008d3f1ec9b5e55e9e26d 100644 (file)
@@ -1347,6 +1347,55 @@ e_comp_wl_subsurface_parent_get(E_Client *ec)
    return ec->comp_data->sub.data ? ec->comp_data->sub.data->parent : NULL;
 }
 
+EINTERN void
+e_comp_wl_subsurface_resource_stand_alone_mode_set(struct wl_resource *subsurface_resource)
+{
+   E_Client *ec;
+
+   EINA_SAFETY_ON_FALSE_RETURN(wl_resource_instance_of(subsurface_resource,
+                                                       &wl_subsurface_interface,
+                                                       &_e_subsurface_interface));
+
+   ec = wl_resource_get_user_data(subsurface_resource);
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+   EINA_SAFETY_ON_FALSE_RETURN(e_comp_wl_subsurface_check(ec));
+
+   ELOGF("SUBSURFACE", "SUBSURF|STAND_ALONE", ec);
+   if (ec->comp_data->sub.data)
+     ec->comp_data->sub.data->stand_alone = EINA_TRUE;
+}
+
+EINTERN void
+e_comp_wl_subsurface_resource_place_below_parent(struct wl_resource *subsurface_resource)
+{
+   E_Client *ec;
+   E_Client *epc;
+   E_Comp_Wl_Client_Data *epc_cdata;
+
+   EINA_SAFETY_ON_FALSE_RETURN(wl_resource_instance_of(subsurface_resource,
+                                                       &wl_subsurface_interface,
+                                                       &_e_subsurface_interface));
+
+   ec = wl_resource_get_user_data(subsurface_resource);
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+   EINA_SAFETY_ON_FALSE_RETURN(e_comp_wl_subsurface_check(ec));
+
+   epc = e_comp_wl_subsurface_parent_get(ec);
+   EINA_SAFETY_ON_NULL_RETURN(epc);
+   epc_cdata = e_client_cdata_get(epc);
+   EINA_SAFETY_ON_NULL_RETURN(epc_cdata);
+
+   ELOGF("SUBSURFACE", "SUBSURF|BELOW_PARENT", ec);
+   epc_cdata->sub.list = eina_list_remove(epc_cdata->sub.list, ec);
+   epc_cdata->sub.list_pending = eina_list_remove(epc_cdata->sub.list_pending, ec);
+   epc_cdata->sub.below_list = eina_list_remove(epc_cdata->sub.below_list, ec);
+   epc_cdata->sub.below_list_pending = eina_list_remove(epc_cdata->sub.below_list_pending, ec);
+
+   epc_cdata->sub.below_list_pending = eina_list_append(epc_cdata->sub.below_list_pending, ec);
+   epc_cdata->sub.below_list = eina_list_append(epc_cdata->sub.below_list, ec);
+   epc_cdata->sub.list_changed = EINA_TRUE;
+}
+
 static void
 _e_comp_wl_subsurface_cb_dummy_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
 {
index d0b505604e0fe9ef9cc2f91bbf2778bd44e2d232..dc8cac8256443f1f43634afcb9518f12187c891e 100644 (file)
@@ -8,6 +8,12 @@
 #endif
 #include <wayland-server.h>
 
+/* To support tizen_policy interface related to wl_subsurface.
+ * tizen_policy.place_subsurface_below_parent
+ * tizen_policy.set_subsurface_stand_alone */
+EINTERN void          e_comp_wl_subsurface_resource_stand_alone_mode_set(struct wl_resource *subsurface_resource);
+EINTERN void          e_comp_wl_subsurface_resource_place_below_parent(struct wl_resource *subsurface_resource);
+
 E_API Eina_Bool       e_comp_wl_subsurface_create(E_Client *ec, E_Client *epc, uint32_t id, struct wl_resource *surface_resource);
 
 EINTERN Eina_Bool     e_comp_wl_subsurfaces_init(E_Comp_Wl_Data *wl_comp);
index 835dfd5e327dcc878f340d6ab7397a67072a24da..7810837b15274f1fddaa733b7afbb248ed3e8790 100644 (file)
@@ -2053,46 +2053,13 @@ e_policy_wl_win_scrmode_apply(void)
 static void
 _tzpol_iface_cb_subsurf_place_below_parent(struct wl_client *client EINA_UNUSED, struct wl_resource *res_tzpol EINA_UNUSED, struct wl_resource *subsurf)
 {
-   E_Client *ec;
-   E_Client *epc;
-   E_Comp_Wl_Client_Data *epc_cdata;
-
-   ec = wl_resource_get_user_data(subsurf);
-   EINA_SAFETY_ON_NULL_RETURN(ec);
-
-   epc = e_comp_wl_subsurface_parent_get(ec);
-   EINA_SAFETY_ON_NULL_RETURN(epc);
-   epc_cdata = e_client_cdata_get(epc);
-   EINA_SAFETY_ON_NULL_RETURN(epc_cdata);
-
-   ELOGF("TZPOL", "SUBSURF|BELOW_PARENT", ec);
-   epc_cdata->sub.list = eina_list_remove(epc_cdata->sub.list, ec);
-   epc_cdata->sub.list_pending = eina_list_remove(epc_cdata->sub.list_pending, ec);
-   epc_cdata->sub.below_list = eina_list_remove(epc_cdata->sub.below_list, ec);
-   epc_cdata->sub.below_list_pending = eina_list_remove(epc_cdata->sub.below_list_pending, ec);
-
-   epc_cdata->sub.below_list_pending = eina_list_append(epc_cdata->sub.below_list_pending, ec);
-   epc_cdata->sub.below_list = eina_list_append(epc_cdata->sub.below_list, ec);
-   epc_cdata->sub.list_changed = EINA_TRUE;
+   e_comp_wl_subsurface_resource_place_below_parent(subsurf);
 }
 
 static void
 _tzpol_iface_cb_subsurf_stand_alone_set(struct wl_client *client EINA_UNUSED, struct wl_resource *res_tzpol EINA_UNUSED, struct wl_resource *subsurf)
 {
-   E_Client *ec;
-   E_Comp_Wl_Client_Data *cdata;
-   E_Comp_Wl_Subsurf_Data *sdata;
-
-   ec = wl_resource_get_user_data(subsurf);
-   EINA_SAFETY_ON_NULL_RETURN(ec);
-   cdata = e_client_cdata_get(ec);
-   EINA_SAFETY_ON_NULL_RETURN(cdata);
-
-   sdata = cdata->sub.data;
-   EINA_SAFETY_ON_NULL_RETURN(sdata);
-
-   ELOGF("TZPOL", "SUBSURF|STAND_ALONE", ec);
-   sdata->stand_alone = EINA_TRUE;
+   e_comp_wl_subsurface_resource_stand_alone_mode_set(subsurf);
 }
 
 static void