tizen-remote-surface: added new requests to tizen_remote_surface_manager and version... 71/203271/2
authorMinJeong Kim <minjjj.kim@samsung.com>
Wed, 10 Apr 2019 05:23:09 +0000 (14:23 +0900)
committerMinJeong Kim <minjjj.kim@samsung.com>
Fri, 12 Apr 2019 09:02:15 +0000 (18:02 +0900)
- tizen_remote_surface_manager@create_surface_with_wl_surface is added.
- tizen_remote_surface_manager interface version up to 6
- example code block is added to tzrs-consumer.c

Change-Id: Iaca4a7568818f362f73c6afcd3ca7a76a4c3e71a

protocol/tizen/tizen-remote-surface.xml
src/examples/tzrs-consumer.c

index a7a1d9dbe1b723c512d616a7f48792662197fce7..3c76a6bebe0b2eef8fa60042e3959860cf9834e8 100644 (file)
@@ -1,6 +1,6 @@
 <?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">
index 8d8db610fdc16ea0b3e4012e3bccd8849233cada..715abb9276b58430fe107f61761d85dba0f59a23 100644 (file)
@@ -378,7 +378,7 @@ _tzrs_init(uint32_t res_id,
    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);
@@ -413,12 +413,31 @@ _tzrs_init(uint32_t res_id,
    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);