-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Windows DispatcherQueue freezes #941
Comments
dalyIsaac
added a commit
that referenced
this issue
Jul 6, 2024
Whim would previously enqueue at the end of every transform, even if there weren't any queued events. I suspect that this may be the case of #941 (without any evidence at this stage). Regardless of whether it is, I think it's a worthy check to put in place.
I have a higher level of confidence that it's because number of
Proposed fix:
|
dalyIsaac
added a commit
that referenced
this issue
Jul 7, 2024
This PR reduces the amount of event dispatches being enqueued onto the STA thread. Previously, it was possible to have the STA thread execute >80 callbacks queued and for them all to execute within 300ms. This is related to #941.
dalyIsaac
added a commit
that referenced
this issue
Jul 28, 2024
Previously, Whim would enqueue a `DoLayout` whenever a window moved. This was done to account for windows doing atypical things, like trying to restore their own position. This worked prior to Whim becoming multi-threaded. Now that it is, this is no longer a viable approach. The `WindowMovedTransform` is triggered many times by Whim. Accordingly, the enqueueing of `DoLayout` similarly is done many times, sometimes overloading the main thread (related issues: #941, #944). This PR allows custom logic for handling events for specific types of windows. `IWindowProcessor` s specify whether to ignore the current Windows event. A `FirefoxWindowProcessor` has been implemented to account for atypical behavior by Firefox during startup.
Likely addressed in aforementioned issues and PRs. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
The
DispatcherQueue
will eventually stop executing enqueued callbacks. At the same time, the Bar freezes and no longer updates.InitializeCoreDispatcher
TryEnqueue
s, based on whether there are events to dispatch.The text was updated successfully, but these errors were encountered: