[TTVD] Return starting state when registering in suspend resume observer 68/317768/3
authorJakub Gajownik <j.gajownik2@samsung.com>
Thu, 12 Sep 2024 07:27:16 +0000 (09:27 +0200)
committerBot Blink <blinkbot@samsung.com>
Wed, 18 Sep 2024 14:30:58 +0000 (14:30 +0000)
When using suspend resume manager through mojo it should be
also possible to obtain current state of process in terms
of its visibility. It might be later used by client to
determine whether some hardware resources should be used
or not.

Bug: https://jira-eu.sec.samsung.net/browse/VDGAME-576
Change-Id: I8c7a6a8079bbe2d1dde6171951ceead21bbd60c9
Signed-off-by: Jakub Gajownik <j.gajownik2@samsung.com>
tizen_src/chromium_impl/services/suspend_resume/public/mojom/suspend_resume_service.mojom
tizen_src/chromium_impl/services/suspend_resume/suspend_resume_service_impl.cc
tizen_src/chromium_impl/services/suspend_resume/suspend_resume_service_impl.h
tizen_src/chromium_impl/third_party/blink/renderer/platform/peerconnection/switchable_video_decoder_wrapper.cc

index e5e9b50a6d1788701e73b5059a4fb3d760f4b9c4..00df9b80075d5cff4656ee795e7cf667f6016606 100644 (file)
@@ -19,5 +19,6 @@ interface SuspendResumeObserver {
 };
 
 interface SuspendResumeManager {
-  AddObserver(pending_remote<SuspendResumeObserver> receiver);
+  [Sync]
+  AddObserver(pending_remote<SuspendResumeObserver> receiver) => (State? state);
 };
index a20b4ab856c47268531e967e93a7b002d11de4ae..797cd6645bd9870da6b6127d1668cf5ed28448b5 100644 (file)
@@ -51,8 +51,11 @@ void SuspendResumeServiceImpl::AddReceiver(
 }
 
 void SuspendResumeServiceImpl::AddObserver(
-    mojo::PendingRemote<mojom::SuspendResumeObserver> pending_observer) {
+    mojo::PendingRemote<mojom::SuspendResumeObserver> pending_observer,
+    AddObserverCallback callback) {
+  base::AutoLock locker(lock_);
   observers_.Add(std::move(pending_observer));
+  std::move(callback).Run(last_state_);
 }
 
 }  // namespace suspend_resume
index 1e63480504092bea043227a1b5ddc65eccee8415..629a794461ae0a90920d8902c4c58f6cb0755b6c 100644 (file)
@@ -29,8 +29,9 @@ class SuspendResumeServiceImpl : public mojom::SuspendResumeManager {
       mojo::PendingReceiver<mojom::SuspendResumeManager> pending_receiver);
 
   // mojom::SuspendResumeService implementation
-  void AddObserver(mojo::PendingRemote<mojom::SuspendResumeObserver>
-                       pending_observer) override;
+  void AddObserver(
+      mojo::PendingRemote<mojom::SuspendResumeObserver> pending_observer,
+      AddObserverCallback callback) override;
 
  private:
   SuspendResumeServiceImpl() = default;
index 15beca0ff083e66f0879f4a721b13a1eebbc96a6..d37d888e9ce3d230033feb3ce5ec7258dd398280 100644 (file)
@@ -101,9 +101,10 @@ SwitchableVideoDecoderWrapper::SwitchableVideoDecoderWrapper(
   mojo::PendingRemote<suspend_resume::mojom::SuspendResumeManager>
       pending_manager;
   GetInterface(pending_manager.InitWithNewPipeAndPassReceiver());
+  absl::optional<suspend_resume::State> state;
   mojo::Remote<suspend_resume::mojom::SuspendResumeManager>(
       std::move(pending_manager))
-      ->AddObserver(receiver_.BindNewPipeAndPassRemote());
+      ->AddObserver(receiver_.BindNewPipeAndPassRemote(), &state);
 }
 
 bool SwitchableVideoDecoderWrapper::Configure(