提交 d45638fc 编写于 作者: C Chinmay Garde 提交者: GitHub

[content_handler] Make RuntimeHolder convey its viewport metrics to the direct...

[content_handler] Make RuntimeHolder convey its viewport metrics to the direct input instance. (#3367)
上级 a042f575
......@@ -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<float>(finger.x) / ACER12_X_MAX) *
viewport_metrics_.physical_width);
pointer_data.physical_y = ((static_cast<float>(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
......@@ -10,6 +10,7 @@
#include <vector>
#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<uint8_t> read_buffer_;
FidlAsyncWaitID last_wait_;
std::set<int64_t> touch_ids_;
blink::ViewportMetrics viewport_metrics_;
static ftl::UniqueFD GetTouchFileDescriptor();
......
......@@ -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.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册