[fuchsia] remove Scenic and GFX dependencies in DesktopCapturer
We previously used:
- fuchsia.ui.scenic.Scenic/UsesFlatland to determine whether to use
Flatland; from now on it should always be the case, so this check is
no longer necessary.
- fuchsia.ui.scenic.Scenic/GetDisplayInfo to get
fuchsia.ui.gfx.DisplayInfo. This has been migrated to
fuchsia.ui.display.singleton.Info/GetMetrics and
fuchsia.ui.display.singleton.Metrics.
Bug: fuchsia:100303
Change-Id: I147da9ffdf0ca49e1c5bde5d188e434fc660becc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/311860
Reviewed-by: Emircan Uysaler <emircan@google.com>
Reviewed-by: Alexander Cooper <alcooper@chromium.org>
Commit-Queue: Caroline Liu <carolineliu@google.com>
Cr-Commit-Position: refs/heads/main@{#40432}
diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn
index 6f3e9d2..068cc2e 100644
--- a/modules/desktop_capture/BUILD.gn
+++ b/modules/desktop_capture/BUILD.gn
@@ -451,8 +451,7 @@
"../../rtc_base:divide_round",
"//third_party/fuchsia-sdk/sdk/fidl/fuchsia.sysmem",
"//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.composition",
- "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.scenic",
- "//third_party/fuchsia-sdk/sdk/pkg/scenic_cpp",
+ "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.ui.display.singleton",
"//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
]
}
diff --git a/modules/desktop_capture/screen_capturer_fuchsia.cc b/modules/desktop_capture/screen_capturer_fuchsia.cc
index 19c4c73..1072b93 100644
--- a/modules/desktop_capture/screen_capturer_fuchsia.cc
+++ b/modules/desktop_capture/screen_capturer_fuchsia.cc
@@ -12,7 +12,7 @@
#include <fuchsia/sysmem/cpp/fidl.h>
#include <fuchsia/ui/composition/cpp/fidl.h>
-#include <fuchsia/ui/scenic/cpp/fidl.h>
+#include <fuchsia/ui/display/singleton/cpp/fidl.h>
#include <lib/sys/cpp/component_context.h>
#include <algorithm>
@@ -56,17 +56,7 @@
std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer(
const DesktopCaptureOptions& options) {
- if (ScreenCapturerFuchsia::CheckRequirements()) {
- std::unique_ptr<ScreenCapturerFuchsia> capturer(
- new ScreenCapturerFuchsia());
- return capturer;
- }
- return nullptr;
-}
-
-ScreenCapturerFuchsia::ScreenCapturerFuchsia()
- : component_context_(sys::ComponentContext::Create()) {
- RTC_DCHECK(CheckRequirements());
+ return capturer(new ScreenCapturerFuchsia());
}
ScreenCapturerFuchsia::~ScreenCapturerFuchsia() {
@@ -82,26 +72,6 @@
}
}
-// TODO(fxbug.dev/100303): Remove this function when Flatland is the only API.
-bool ScreenCapturerFuchsia::CheckRequirements() {
- std::unique_ptr<sys::ComponentContext> component_context =
- sys::ComponentContext::Create();
- fuchsia::ui::scenic::ScenicSyncPtr scenic;
- zx_status_t status = component_context->svc()->Connect(scenic.NewRequest());
- if (status != ZX_OK) {
- RTC_LOG(LS_ERROR) << "Failed to connect to Scenic: " << status;
- return false;
- }
-
- bool scenic_uses_flatland = false;
- scenic->UsesFlatland(&scenic_uses_flatland);
- if (!scenic_uses_flatland) {
- RTC_LOG(LS_ERROR) << "Screen capture not supported without Flatland.";
- }
-
- return scenic_uses_flatland;
-}
-
void ScreenCapturerFuchsia::Start(Callback* callback) {
RTC_DCHECK(!callback_);
RTC_DCHECK(callback);
@@ -226,24 +196,26 @@
}
void ScreenCapturerFuchsia::SetupBuffers() {
- fuchsia::ui::scenic::ScenicSyncPtr scenic;
- zx_status_t status = component_context_->svc()->Connect(scenic.NewRequest());
+ fuchsia::ui::display::singleton::InfoSyncPtr display_info;
+ zx_status_t status =
+ component_context_->svc()->Connect(display_info.NewRequest());
if (status != ZX_OK) {
fatal_error_ = true;
- RTC_LOG(LS_ERROR) << "Failed to connect to Scenic: " << status;
+ RTC_LOG(LS_ERROR)
+ << "Failed to connect to fuchsia.ui.display.singleton.Info: " << status;
return;
}
- fuchsia::ui::gfx::DisplayInfo display_info;
- status = scenic->GetDisplayInfo(&display_info);
+ fuchsia::ui::display::singleton::Metrics metrics;
+ status = display_info->GetMetrics(&metrics);
if (status != ZX_OK) {
fatal_error_ = true;
RTC_LOG(LS_ERROR) << "Failed to connect to get display dimensions: "
<< status;
return;
}
- width_ = display_info.width_in_px;
- height_ = display_info.height_in_px;
+ width_ = metrics.extent_in_px().width;
+ height_ = metrics.extent_in_px().height;
status = component_context_->svc()->Connect(sysmem_allocator_.NewRequest());
if (status != ZX_OK) {
diff --git a/modules/desktop_capture/screen_capturer_fuchsia.h b/modules/desktop_capture/screen_capturer_fuchsia.h
index 4449309..6e0f87c 100644
--- a/modules/desktop_capture/screen_capturer_fuchsia.h
+++ b/modules/desktop_capture/screen_capturer_fuchsia.h
@@ -29,8 +29,6 @@
ScreenCapturerFuchsia();
~ScreenCapturerFuchsia() override;
- static bool CheckRequirements();
-
// DesktopCapturer interface.
void Start(Callback* callback) override;
void CaptureFrame() override;