Repository navigation
cocoa: Opt out of UpdateCycle event delivery on macOS 26+ - #16542
Merged
Merged
Conversation
Tahoe changed the default event processing loop for apps built with the macOS 26 SDK to synchronize with CADisplayLink. This effectively restricts input polling rate to VBlank cadence, which is not desirable for games. Setting NSApplicationUpdateCycleEnabled=NO restores macOS 15 behavior where NSEventTypeMouseMoved arrives at the polling rate of the mouse.
Collaborator
|
Merged, thanks! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Tahoe changed the default event processing loop for apps built with the macOS 26 SDK to synchronize with
CADisplayLink. This effectively restricts input polling rate to VBlank cadence, which is not desirable for games.Setting
NSApplicationUpdateCycleEnabled=NOrestores macOS 15 behavior whereNSEventTypeMouseMovedarrives at the polling rate of the mouse, even if the app is built with the macOS 26 SDK. This can also be accomplished using this same property in theInfo.plistor forging theLC_BUILD_VERSIONvalue at link-time with something like-Wl,-platform_version,macos,11,15.0, but those solutions both require app developers to modify their build system.AI usage disclosure: Reverse engineering of AppKit to find this workaround was done using an LLM with a repro test harness, but all SDL code and testing was done manually by me.
Existing Issue(s)
Downstream report: moonlight-stream/moonlight-qt#2036