[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}
This commit is contained in:
parent
c0ed83eac2
commit
fe5be2eb4f
@ -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",
|
||||
]
|
||||
}
|
||||
|
||||
@ -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 @@ size_t RoundUpToMultiple(size_t value, size_t multiple) {
|
||||
|
||||
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 @@ ScreenCapturerFuchsia::~ScreenCapturerFuchsia() {
|
||||
}
|
||||
}
|
||||
|
||||
// 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 @@ 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) {
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user