<?xml version="1.0" encoding="UTF-8"?>
<protocol name="tizen_remote_surface">
- <interface name="tizen_remote_surface_manager" version="5">
+ <interface name="tizen_remote_surface_manager" version="6">
<description summary="manager of tizen_remote_surface">
A manager of tizen_remote_surface. This object is in charge of
creating tizen_remote_surface_provider and tizen_remote_surface and
Destroy tizen_remote_surface_manager.
</description>
</request>
+
+ <!-- version 6 additions -->
+ <request name="create_surface_with_wl_surface" since="6">
+ <description summary="create new remote surface">
+ Ask manager creation of a new remote surface.
+ resource_id is required to identify this remote surface is what provider of
+ and wl_tbm object is used for remote buffer of this remote surface.
+ wayland_surface explicitly specifies one wl_surface object to contain this remote surface.
+ </description>
+ <arg name="id" type="new_id" interface="tizen_remote_surface" summary="new remote surface id" />
+ <arg name="resource_id" type="uint" summary="provider's resource id"/>
+ <arg name="tbm" type="object" interface="wl_tbm" summary="wl_tbm object used to get tbm_surface"/>
+ <arg name="wayland_surface" type="object" interface="wl_surface" summary="wl_surface to contain this new remote surface"/>
+ </request>
+
</interface>
<interface name="tizen_remote_surface_provider" version="4">
struct wl_display *wl_dpy;
Eina_Iterator *itr;
Ecore_Wl2_Global *global;
- int ver = 5;
+ int ver = 6;
struct wl_tbm *wl_tbm;
wl2_win = (Ecore_Wl2_Window *)elm_win_wl_window_get(win);
tbm_client = wayland_tbm_client_init(wl_dpy);
wl_tbm = wayland_tbm_client_get_wl_tbm(tbm_client);
- /* create tizen remote surface for showing buffer of provider winodw */
- tzrs =
- tizen_remote_surface_manager_create_surface(tzrs_mng, res_id, wl_tbm);
+ /* Create tizen remote surface for showing buffer of provider winodw
+ *
+ * Since TIZEN_REMOTE_SURFACE_MANAGER_CREATE_SURFACE_WITH_WL_SURFACE_SINCE_VERSION,
+ * client can request create tizen remote surface with its wl_surfacea(will
+ * contain tizen remote surface) to tizen remote surface manager.
+ */
+ if (ver >= TIZEN_REMOTE_SURFACE_MANAGER_CREATE_SURFACE_WITH_WL_SURFACE_SINCE_VERSION)
+ tzrs =
+ tizen_remote_surface_manager_create_surface_with_wl_surface(tzrs_mng,
+ res_id,
+ wl_tbm,
+ surface);
+ else
+ tzrs =
+ tizen_remote_surface_manager_create_surface(tzrs_mng, res_id, wl_tbm);
tizen_remote_surface_add_listener(tzrs, &_tzrs_listener, NULL);
- tizen_remote_surface_set_owner(tzrs, surface);
+
+ /* Inform server what wl_surface is container oftizen remote surface.
+ *
+ * Since TIZEN_REMOTE_SURFACE_MANAGER_CREATE_SURFACE_WITH_WL_SURFACE_SINCE_VERSION,
+ * client can inform it through new request(tizen_remote_surface_manager_create_surface_with_wl_surface)
+ */
+ if (ver < TIZEN_REMOTE_SURFACE_MANAGER_CREATE_SURFACE_WITH_WL_SURFACE_SINCE_VERSION)
+ tizen_remote_surface_set_owner(tzrs, surface);
/* start redirection of provider's buffer update */
tizen_remote_surface_redirect(tzrs);