@@ -51,6 +51,7 @@ void SetInterfaceErrorHandler(fidl::Binding<T>& binding, std::string name) {
5151}
5252
5353PlatformView::PlatformView (
54+ bool is_flatland,
5455 flutter::PlatformView::Delegate& delegate,
5556 flutter::TaskRunners task_runners,
5657 fuchsia::ui::views::ViewRef view_ref,
@@ -121,31 +122,33 @@ PlatformView::PlatformView(
121122 });
122123
123124 // Begin watching for pointer events.
124- pointer_delegate_->WatchLoop ([weak = weak_factory_.GetWeakPtr ()](
125- std::vector<flutter::PointerData> events) {
126- if (!weak) {
127- FML_LOG (WARNING) << " PlatformView use-after-free attempted. Ignoring." ;
128- return ;
129- }
125+ if (is_flatland) { // TODO(fxbug.dev/85125): make unconditional
126+ pointer_delegate_->WatchLoop ([weak = weak_factory_.GetWeakPtr ()](
127+ std::vector<flutter::PointerData> events) {
128+ if (!weak) {
129+ FML_LOG (WARNING) << " PlatformView use-after-free attempted. Ignoring." ;
130+ return ;
131+ }
130132
131- if (events.empty () ) {
132- return ; // No work, bounce out.
133- }
133+ if (events.size () == 0 ) {
134+ return ; // No work, bounce out.
135+ }
134136
135- // If pixel ratio hasn't been set, use a default value of 1.
136- const float pixel_ratio = weak->view_pixel_ratio_ .value_or (1 .f );
137- auto packet = std::make_unique<flutter::PointerDataPacket>(events.size ());
138- for (size_t i = 0 ; i < events.size (); ++i) {
139- auto & event = events[i];
140- // Translate logical to physical coordinates, as per
141- // flutter::PointerData contract. Done here because pixel ratio comes
142- // from the graphics API.
143- event.physical_x = event.physical_x * pixel_ratio;
144- event.physical_y = event.physical_y * pixel_ratio;
145- packet->SetPointerData (i, event);
146- }
147- weak->DispatchPointerDataPacket (std::move (packet));
148- });
137+ // If pixel ratio hasn't been set, use a default value of 1.
138+ const float pixel_ratio = weak->view_pixel_ratio_ .value_or (1 .f );
139+ auto packet = std::make_unique<flutter::PointerDataPacket>(events.size ());
140+ for (size_t i = 0 ; i < events.size (); ++i) {
141+ auto & event = events[i];
142+ // Translate logical to physical coordinates, as per
143+ // flutter::PointerData contract. Done here because pixel ratio comes
144+ // from the graphics API.
145+ event.physical_x = event.physical_x * pixel_ratio;
146+ event.physical_y = event.physical_y * pixel_ratio;
147+ packet->SetPointerData (i, event);
148+ }
149+ weak->DispatchPointerDataPacket (std::move (packet));
150+ });
151+ }
149152
150153 // Finally! Register the native platform message handlers.
151154 RegisterPlatformMessageHandlers ();
0 commit comments