Add tbm surface getter
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 5 Feb 2020 10:19:58 +0000 (19:19 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Thu, 6 Feb 2020 01:41:00 +0000 (10:41 +0900)
Adds:
 - screen_connector_launcher_service_image_get_tbm_surface()

Requires:
 - https://review.tizen.org/gerrit/#/c/platform/core/appfw/screen-connector/+/223998/
 - https://review.tizen.org/gerrit/#/c/platform/core/appfw/widget-viewer/+/224004/

Change-Id: I106c1eb6996100acdb989a9b23d324e8f37a6599
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
screen_connector_common/wl_buffer.h
screen_connector_launcher_service/include/screen_connector_launcher_service.h
screen_connector_launcher_service/stub.cc

index 90c4085d24c9e5982ded1134c3988ec134bb1564..2d8f88cc74fc9a5cb15c6e3f9067179652152946 100644 (file)
@@ -68,6 +68,12 @@ class EXPORT WlBuffer : public Handle<struct wl_buffer*> {
     return tbm_surface_info_.get();
   }
 
+  tbm_surface_h GetTbmSurface() {
+     tbm_surface_h tbm_surface = static_cast<tbm_surface_h>(
+         wl_buffer_get_user_data(GetRaw()));
+     return tbm_surface;
+  }
+
  private:
   struct tizen_remote_surface* trs_;
   std::unique_ptr<tbm_surface_info_s, decltype(std::free)*> tbm_surface_info_;
index ce433eef9243968b4a5cc4977b4541ba9e7b02d9..22029a6db1047a6567e9395da75ed6b7329ec64b 100644 (file)
@@ -138,6 +138,10 @@ int screen_connector_launcher_service_image_get_shared_widget_info(
   screen_connector_launcher_service_image_h handle,
   char** shared_widget_info);
 
+int screen_connector_launcher_service_image_get_tbm_surface(
+    screen_connector_launcher_service_image_h handle,
+    tbm_surface_h* tbm_surface);
+
 int screen_connector_launcher_service_image_get_tbm_surface_info(
   screen_connector_launcher_service_image_h handle,
   tbm_surface_info_s** tbm_surface_info);
index d6d71f7f1ba064c5a2f4def11ba43719f9c5966c..437bf24a460e8315575ba5e19622d9748bb49051 100644 (file)
@@ -331,6 +331,28 @@ screen_connector_launcher_service_image_get_shared_widget_info(
   return 0;
 }
 
+extern "C" EXPORT int
+screen_connector_launcher_service_image_get_tbm_surface(
+    screen_connector_launcher_service_image_h handle,
+    tbm_surface_h* tbm_surface) {
+  if (handle == nullptr || tbm_surface == nullptr) {
+    _E("Invalid parameter");
+    return -EINVAL;
+  }
+
+  auto img_ptr =
+      reinterpret_cast<std::shared_ptr<screen_connector::RawImage>*>(handle);
+  auto img = img_ptr->get();
+  if (img == nullptr) {
+    _E("Invalid parameter");
+    return -EINVAL;
+  }
+
+  *tbm_surface = img->GetWlBuffer()->GetTbmSurface();
+
+  return 0;
+}
+
 extern "C" EXPORT int
 screen_connector_launcher_service_image_get_tbm_surface_info(
   screen_connector_launcher_service_image_h handle,