Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Fix input flow event logic #24526

Merged

Conversation

nathanrogersgoogle
Copy link
Contributor

Add logic to handle the case of touch events that do not lead to frames.

Previously, all touch event flow ids were queued in |Animator| until a frame
was created, and then flowed into that frame. For no frame touch
events, this would then cause metrics and trace visualization to erroneously
associate the eventual frame with the original touch events. This issue
is fixed by extending the Animator/VsyncWaiter's secondary vsync
callback mechanism to support additional callbacks, and then using a
secondary vsync callback to drain/end touch flow events when frames
finish and no further frames are scheduled.

Also add an additional flow step to
|SmoothPointerDataDispatcher::DispatchPacket|.

b/177250670

Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.

List which issues are fixed by this PR. You must list at least one issue.

If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt. See testing the engine for instructions on
    writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.
  • The reviewer has submitted any presubmit flakes in this PR using the engine presubmit flakes form before re-triggering the failure.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Add logic to handle the case of touch events that do not lead to frames.

Previously, all touch event flow ids were queued in |Animator| until a frame
was created, and then flowed into that frame.  For no frame touch
events, this would then cause metrics and trace visualization to erroneously
associate the eventual frame with the original touch events.  This issue
is fixed by extending the Animator/VsyncWaiter's secondary vsync
callback mechanism to support additional callbacks, and then using a
secondary vsync callback to drain/end touch flow events when frames
finish and no further frames are scheduled.

Also add an additional flow step to
|SmoothPointerDataDispatcher::DispatchPacket|.

b/177250670
@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact Hixie on the #hackers channel in Chat.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@google-cla google-cla bot added the cla: yes label Feb 19, 2021
Copy link
Contributor

@iskakaushik iskakaushik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@iskakaushik iskakaushik added the waiting for tree to go green This PR is approved and tested, but waiting for the tree to be green to land. label Feb 25, 2021
@fluttergithubbot fluttergithubbot merged commit c4678d6 into flutter:master Feb 25, 2021
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 25, 2021
zanderso pushed a commit to flutter/flutter that referenced this pull request Feb 25, 2021
* 4f660da Roll Dart SDK from 63c6585d8499 to 6b7054122356 (1 revision) (flutter/engine#24625)

* 25887bc Roll Skia from e79bb32365ea to 4ac9aadd306b (4 revisions) (flutter/engine#24630)

* 1bdf5d3 TextStyle level leadingDistribution (flutter/engine#24025)

* c4678d6 Fix input flow event logic (flutter/engine#24526)
hjfreyer pushed a commit to hjfreyer/engine that referenced this pull request Mar 22, 2021
chriscraws pushed a commit to chriscraws/engine that referenced this pull request Mar 23, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
cla: yes waiting for tree to go green This PR is approved and tested, but waiting for the tree to be green to land.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants