Skip to content

Conversation

@HeikoKlare
Copy link
Contributor

Asynchronous processing of DPI change events is currently done by processing the event for each control via Display#asyncExec. This has several drawbacks:

  • the events are processed rather late (even after earlier scheduled, lower-priority business events
  • the events may not be processed while dragging a shell to another monitor in case a browser currently has focus
  • the events are not processed at all if a Synchronizer is used that does not process async events (such as for an Eclipse workspace during startup)

This change replaces the usage of Display#asyncExec for asynchronous processing of DPI events with a timer message sent via the OS and a queue maintained in every control for the events to process. WM_TIMER events are used as they are processed with low priority by the OS but still with higher priority by SWT than any business-logic-side tasks scheduled at a Display instance.

Asynchronous processing of DPI change events is currently done by
processing the event for each control via Display#asyncExec. This has
several drawbacks:
- the events are processed rather late (even after earlier scheduled,
lower-priority business events
- the events may not be processed while dragging a shell to another
monitor in case a browser currently has focus
- the events are not processed at all if a Synchronizer is used that
does not process async events (such as for an Eclipse workspace during
startup)

This change replaces the usage of Display#asyncExec for asynchronous
processing of DPI events with a timer message sent via the OS and
a queue maintained in every control for the events to process. WM_TIMER
events are used as they are processed with low priority by the OS but
still with higher priority by SWT than any business-logic-side tasks
scheduled at a Display instance.
@github-actions
Copy link
Contributor

github-actions bot commented Jan 9, 2026

Test Results (win32)

   34 files  ±0     34 suites  ±0   4m 6s ⏱️ -56s
4 632 tests ±0  4 559 ✅ ±0  73 💤 ±0  0 ❌ ±0 
  167 runs  ±0    164 ✅ ±0   3 💤 ±0  0 ❌ ±0 

Results for commit af5d87b. ± Comparison against base commit 23df87e.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

No relayouting when dragging to monitor with different zoom and browser is opened

1 participant