Skip to content

cocoa: Opt out of UpdateCycle event delivery on macOS 26+ - #16542

Merged
slouken merged 1 commit into
libsdl-org:mainfrom
cgutman:update_cycle
Oct 17, 2026
Merged

slouken merged 1 commit into
libsdl-org:mainfrom
cgutman:update_cycle

Conversation

@cgutman

@cgutman cgutman commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator
  • I confirm that I am the author of this code and release it to the SDL project under the zlib license. This contribution does not contain code from other sources, including code generated by a Large Language Model ("AI").

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=NO restores macOS 15 behavior where NSEventTypeMouseMoved arrives 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 the Info.plist or forging the LC_BUILD_VERSION value 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

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.
@cgutman cgutman changed the title cocoa: Opt out of UpdateCycle event delivery on macOS 26 cocoa: Opt out of UpdateCycle event delivery on macOS 26+ Oct 17, 2026
@slouken
slouken merged commit 0ae55ed into libsdl-org:main Oct 17, 2026
10 checks passed
@slouken slouken added this to the 3.4.20 milestone Oct 17, 2026
@slouken

slouken commented Oct 17, 2026

Copy link
Copy Markdown
Collaborator

Merged, thanks!

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.

2 participants