This is to seperate sub-surface code out from e_policy_wl.c file.
Change-Id: I65d84ce69dbe2c4effa5bfcf88452933d5df57c3
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)
{
#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);
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