CNA-BUG-237: A comment in Sdl3Platform.cpp refers to a Game::UpdateInput() that does not exist
Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit c1c316b9; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
The SDL3 platform explains its lazy controller-subsystem start by saying Game::UpdateInput() pumps the input services only once the subsystem is initialised, but Game has no UpdateInput(); the per-frame controller pump lives in Game::PollEvents.
- Identifier
CNA-BUG-237- Category
- Bug
- Subsystem
- Documentation & release tooling
- Status
- Open
- Verified against
- CNA
c1c316b9(c1c316b9c7a846ce8002809c151fcd1af14942c9) - Severity
- Low (a triage suggestion, not a project priority)
- Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- Source comment in CNA::Platform::Sdl3::Sdl3Platform::EnsureControllerSubsystem
Expected behaviour
The comment explains a real and subtle rule -- the controller subsystem is started by the first controller query, not by the loop -- so it should name the function that actually pumps controllers each frame.
Actual behaviour at TARGET
Sdl3Platform.cpp says “Game::UpdateInput() deliberately does not reach these accessors until the subsystem is already initialized”. Game.cpp has no UpdateInput; the per-frame pump is in Game::PollEvents, guarded by IsSubsystemInitialized(PlatformSubsystem::Gamepad) before it reaches GetGamepad()/GetJoystick().
Source locations
modules/platform/src/Sdl3/Sdl3Platform.cpp— EnsureControllerSubsystem comment naming Game::UpdateInput()modules/runtime/src/Game.cpp— Game::PollEvents holds the gamepad-gated pump; there is no Game::UpdateInput
Evidence
Checked by reading the SDL3 comment and searching modules/runtime/src/Game.cpp for UpdateInput at c1c316b9 (across the source tree it appears only in this comment; Game::PollEvents holds the gate). Not executed.
Independent re-verification: Checked by reading the SDL3 comment and Game::PollEvents in Game.cpp at c1c316b9; not executed. No Game::UpdateInput was ever declared or defined at any commit up to the target; the name entered with the commit and the plan_platform.md PLAT-83 row that introduced the gamepad-gated pump. Across the tree the name appears in that source comment, in that PLAT-83 row (a second occurrence of the same misnaming, which the suggested comment fix would not touch) and, unrelated, in a design sketch in cnaplatform.md. Game::PollEvents holds the IsSubsystemInitialized(Gamepad) gate.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
Not applicable: comment-only defect. The lazy-start behaviour itself is exercised by the platform input suites.
Regression test
Replace Game::UpdateInput() with Game::PollEvents in the comment.
Blast radius
Maintainers of the SDL3 controller path who look for Game::UpdateInput. No runtime effect.
Workaround
No workaround is known.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- User guide
- Input: gamepad
- Internals
- SDL3 platform internals
- Maintainer workflow
- Modify a platform backend: read first
- Known issues
- Bug index