Add Reset Function
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 29 Apr 2020 00:38:44 +0000 (09:38 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 29 Apr 2020 09:16:08 +0000 (18:16 +0900)
If the raw image is remote surface type, the launcher service calls
the unredirect method when the reset function is called.

Change-Id: I9ebe7eef50b820873538528420cd97aae90f46b6
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
screen_connector_launcher_service/include/screen_connector_launcher_service.h
screen_connector_launcher_service/launcher_service.cc
screen_connector_launcher_service/launcher_service.h
screen_connector_launcher_service/launcher_service_implementation.h
screen_connector_launcher_service/stub.cc
screen_connector_launcher_service/tizen_remote_surface_internal.cc
screen_connector_launcher_service/tizen_remote_surface_internal.h

index 22029a6db1047a6567e9395da75ed6b7329ec64b..828a73f7a2896b09d30380f86ee960b26092d34c 100644 (file)
@@ -118,6 +118,10 @@ int screen_connector_launcher_service_launch_done(
   screen_connector_launcher_service_h handle,
   uint32_t serial);
 
+int screen_connector_launcher_service_reset(
+  screen_connector_launcher_service_h handle,
+  uint32_t serial);
+
 int screen_connector_launcher_service_image_get_direction(
   screen_connector_launcher_service_image_h handle,
   screen_connector_launcher_service_direction_e* direction);
index d486ca3d7e92c6a422073a8900b0528803661ad5..ced3de598b0323bc49da73ca23e081a92c1cd463 100644 (file)
@@ -68,6 +68,15 @@ int LauncherService::Impl::LaunchDone(uint32_t serial) {
   return ret;
 }
 
+int LauncherService::Impl::Reset(uint32_t serial) {
+  if (raw_image_->GetImageType() == ImageType::RemoteSurfaceTBM ||
+      raw_image_->GetImageType() == ImageType::RemoteSurfaceImageFile) {
+    _W("Unredirect()");
+    trs_->Unredirect();
+  }
+  return 0;
+}
+
 void LauncherService::Impl::OnRawBufferUpdated(
     std::shared_ptr<WlBuffer> wl_buffer,
     uint32_t time,
@@ -202,4 +211,8 @@ int LauncherService::LaunchDone(uint32_t serial) {
   return impl_->LaunchDone(serial);
 }
 
+int LauncherService::Reset(uint32_t serial) {
+  return impl_->Reset(serial);
+}
+
 }  // namespace screen_connector
index 3ef2c3a02de1c525a7de53c44b68af8992af8273..d7344ead73d643a5130d0050788314ec3cc9404e 100644 (file)
@@ -55,6 +55,7 @@ class EXPORT LauncherService {
   int Launching(uint32_t serial);
   int LaunchCancel(uint32_t serial);
   int LaunchDone(uint32_t serial);
+  int Reset(uint32_t serial);
 
  private:
   class Impl;
index 0afd237d86b4ae59b5dc80f7b0677dc60c216b5f..8d18eea1e4ef827f5758044db007213e3802e0cf 100644 (file)
@@ -82,6 +82,7 @@ class LauncherService::Impl : TizenRemoteSurface::IEventListener,
   int Launching(uint32_t serial);
   int LaunchCancel(uint32_t serial);
   int LaunchDone(uint32_t serial);
+  int Reset(uint32_t serial);
 
  private:
   friend class LauncherService;
index c95d496d03a84253109e55833abd0ae4e05b99a8..507a8f1b6c401ec6571ef60ae138aae706bfe9b4 100644 (file)
@@ -222,6 +222,18 @@ extern "C" EXPORT int screen_connector_launcher_service_launch_done(
   return ls->LaunchDone(serial);
 }
 
+extern "C" EXPORT int screen_connector_launcher_service_reset(
+    screen_connector_launcher_service_h handle,
+    uint32_t serial) {
+  if (handle == nullptr) {
+    _E("Invalid parameter");
+    return -EINVAL;
+  }
+
+  auto ls = static_cast<LauncherServiceStub*>(handle);
+  return ls->Reset(serial);
+}
+
 extern "C" EXPORT int screen_connector_launcher_service_image_get_direction(
     screen_connector_launcher_service_image_h handle,
     screen_connector_launcher_service_direction_e* direction) {
index 5a6d15e9abd47c8009aad99b1428ed46c07ae3be..a13a4c87024abb19d27ffc75293aabd1663dbc0c 100644 (file)
@@ -82,6 +82,10 @@ void TizenRemoteSurface::Redirect() {
   tizen_remote_surface_redirect(GetRaw());
 }
 
+void TizenRemoteSurface::Unredirect() {
+  tizen_remote_surface_unredirect(GetRaw());
+}
+
 void TizenRemoteSurface::BufferUpdatedCB(void* data,
                                          struct tizen_remote_surface* trs,
                                          struct wl_buffer* buffer,
index 2448ecc4dfc00d5302c48f97c084471a515226f1..95527cd25fc06d4f70655b7c43943fc63a5e850e 100644 (file)
@@ -70,6 +70,7 @@ class TizenRemoteSurface : public Handle<struct tizen_remote_surface*> {
   const std::string& GetSharedWidgetInfo() const;
   uint32_t GetSerial() const;
   void Redirect();
+  void Unredirect();
 
  private:
   static void BufferUpdatedCB(void* data,