mirror of
https://github.com/encounter/engine.git
synced 2026-03-30 11:09:55 -07:00
[content_handler] Make RuntimeHolder convey its viewport metrics to the direct input instance. (#3367)
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user