-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
flutter/engine
#55740Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work lista: multi windowIssues related to multi window supportIssues related to multi window supportengineflutter/engine related. See also e: labels.flutter/engine related. See also e: labels.platform-windowsBuilding on or for Windows specificallyBuilding on or for Windows specificallyteam-windowsOwned by the Windows platform teamOwned by the Windows platform teamtriaged-windowsTriaged by the Windows platform teamTriaged by the Windows platform team
Description
Repro steps
Launch a Flutter Windows app with multiple windows. Overlap the windows and move your pointer back and forth between the two windows. This will eventually crash.
This is known to affect Windows but might affect macOS and Linux too.
Root cause
Pointer events have a "device ID" that must be globally unique, or an assertion will crash the app.
Flutter Windows reuses the same "device ID" if a mouse is moved from one view to another. Usually, Windows generates a "remove pointer" event from the source view and an "add pointer" event to the destination view. However, sometimes the "remove pointer" event isn't generated when the mouse exits a view; this crashes the app on the "pointer add" event.
Possible causes:
- win32 sometimes sends "remove" and "add" pointer events out-of-order
- win32 sometimes reports that a mouse is on multiple HWNDs at once.
Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work lista: multi windowIssues related to multi window supportIssues related to multi window supportengineflutter/engine related. See also e: labels.flutter/engine related. See also e: labels.platform-windowsBuilding on or for Windows specificallyBuilding on or for Windows specificallyteam-windowsOwned by the Windows platform teamOwned by the Windows platform teamtriaged-windowsTriaged by the Windows platform teamTriaged by the Windows platform team