From d45638fc2bf30e85478edd7cf07d12ceb742b671 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Thu, 26 Jan 2017 14:36:30 -0800 Subject: [PATCH] [content_handler] Make RuntimeHolder convey its viewport metrics to the direct input instance. (#3367) --- content_handler/direct_input.cc | 10 ++++++++-- content_handler/direct_input.h | 4 ++++ content_handler/runtime_holder.cc | 8 ++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/content_handler/direct_input.cc b/content_handler/direct_input.cc index abb74e406..d7ae971f7 100644 --- a/content_handler/direct_input.cc +++ b/content_handler/direct_input.cc @@ -151,8 +151,10 @@ void DirectInput::PerformRead() { pointer_data.kind = blink::PointerData::DeviceKind::kTouch; pointer_data.device = touch_identifier; - pointer_data.physical_x = finger.x / 2.0; - pointer_data.physical_y = finger.y / 2.0; + pointer_data.physical_x = ((static_cast(finger.x) / ACER12_X_MAX) * + viewport_metrics_.physical_width); + pointer_data.physical_y = ((static_cast(finger.y) / ACER12_Y_MAX) * + viewport_metrics_.physical_height); bool down = !!acer12_finger_id_tswitch(finger.finger_id); @@ -231,4 +233,8 @@ ftl::UniqueFD DirectInput::GetTouchFileDescriptor() { return {}; } +void DirectInput::SetViewportMetrics(blink::ViewportMetrics metrics) { + viewport_metrics_ = metrics; +} + } // namespace flutter_runner diff --git a/content_handler/direct_input.h b/content_handler/direct_input.h index 2f6877e14..2d12f0165 100644 --- a/content_handler/direct_input.h +++ b/content_handler/direct_input.h @@ -10,6 +10,7 @@ #include #include "flutter/lib/ui/window/pointer_data_packet.h" +#include "flutter/lib/ui/window/viewport_metrics.h" #include "lib/fidl/c/waiter/async_waiter.h" #include "lib/ftl/files/unique_fd.h" #include "lib/ftl/macros.h" @@ -31,6 +32,8 @@ class DirectInput { void CancelWaitForReadAvailability(); + void SetViewportMetrics(blink::ViewportMetrics metrics); + private: DirectInputCallback callback_; bool valid_; @@ -39,6 +42,7 @@ class DirectInput { std::vector read_buffer_; FidlAsyncWaitID last_wait_; std::set touch_ids_; + blink::ViewportMetrics viewport_metrics_; static ftl::UniqueFD GetTouchFileDescriptor(); diff --git a/content_handler/runtime_holder.cc b/content_handler/runtime_holder.cc index fd2ecdd82..e1a6457f1 100644 --- a/content_handler/runtime_holder.cc +++ b/content_handler/runtime_holder.cc @@ -146,6 +146,9 @@ void RuntimeHolder::CreateView( runtime_ = blink::RuntimeController::Create(this); runtime_->CreateDartController(script_uri); runtime_->SetViewportMetrics(viewport_metrics_); +#if FLUTTER_ENABLE_VULKAN + direct_input_->SetViewportMetrics(viewport_metrics_); +#endif // FLUTTER_ENABLE_VULKAN runtime_->dart_controller()->RunFromSnapshot(snapshot.data(), snapshot.size()); } @@ -341,6 +344,11 @@ void RuntimeHolder::OnInvalidation(mozart::ViewInvalidationPtr invalidation, // TODO(abarth): Use view_properties_->display_metrics->device_pixel_ratio // once that's reasonable. runtime_->SetViewportMetrics(viewport_metrics_); +#if FLUTTER_ENABLE_VULKAN + if (direct_input_) { + direct_input_->SetViewportMetrics(viewport_metrics_); + } +#endif // FLUTTER_ENABLE_VULKAN } // Remember the scene version for rendering. -- GitLab