From fe5be2eb4ff8dccd96257fb8cbf32500c636c358 Mon Sep 17 00:00:00 2001 From: Caroline Liu Date: Fri, 14 Jul 2023 17:28:22 +0000 Subject: [PATCH] [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 Reviewed-by: Alexander Cooper Commit-Queue: Caroline Liu Cr-Commit-Position: refs/heads/main@{#40432} --- modules/desktop_capture/BUILD.gn | 3 +- .../screen_capturer_fuchsia.cc | 50 ++++--------------- .../desktop_capture/screen_capturer_fuchsia.h | 2 - 3 files changed, 12 insertions(+), 43 deletions(-) diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn index 6f3e9d26c5..068cc2e8aa 100644 --- a/modules/desktop_capture/BUILD.gn +++ b/modules/desktop_capture/BUILD.gn @@ -451,8 +451,7 @@ rtc_library("desktop_capture") { "../../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 19c4c735ad..1072b93d63 100644 --- a/modules/desktop_capture/screen_capturer_fuchsia.cc +++ b/modules/desktop_capture/screen_capturer_fuchsia.cc @@ -12,7 +12,7 @@ #include #include -#include +#include #include #include @@ -56,17 +56,7 @@ size_t RoundUpToMultiple(size_t value, size_t multiple) { std::unique_ptr DesktopCapturer::CreateRawScreenCapturer( const DesktopCaptureOptions& options) { - if (ScreenCapturerFuchsia::CheckRequirements()) { - std::unique_ptr 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 @@ ScreenCapturerFuchsia::~ScreenCapturerFuchsia() { } } -// TODO(fxbug.dev/100303): Remove this function when Flatland is the only API. -bool ScreenCapturerFuchsia::CheckRequirements() { - std::unique_ptr 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 @@ ScreenCapturerFuchsia::GetBufferConstraints() { } 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 444930963f..6e0f87cc58 100644 --- a/modules/desktop_capture/screen_capturer_fuchsia.h +++ b/modules/desktop_capture/screen_capturer_fuchsia.h @@ -29,8 +29,6 @@ class ScreenCapturerFuchsia final : public DesktopCapturer { ScreenCapturerFuchsia(); ~ScreenCapturerFuchsia() override; - static bool CheckRequirements(); - // DesktopCapturer interface. void Start(Callback* callback) override; void CaptureFrame() override;