diff --git a/content_handler/direct_input.cc b/content_handler/direct_input.cc index abb74e406c37ffdbe314788476931024dee041ab..d7ae971f71a4ffd4dc30e339fdb60da43c261887 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 2f6877e1443f37620eb574875bd698d9cad48806..2d12f01653b8d199428a7b25c90c6ae9d1db8be4 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 fd2ecdd82f24db8703be6ed887c88690783b5654..e1a6457f1f4c45a2ed0e20f968550643742f915d 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.