Repository navigation
fix(shell): keep Wi-Fi polling inside SDL 1.2 event range - #584
Merged
Merged
Conversation
This was referenced Aug 30, 2026
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.
Summary
SDL_NUMEVENTSThis is a focused corrective follow-up to #583 and the v3 NET-05 Wi-Fi UI work. It fixes the device-observed state where the Wi-Fi detail surface remained on
Checking Wi-Fi safety...even though the read-only backend request had completed.Root cause
Bloom Shell is built against SDL 1.2, where
SDL_USEREVENTis 24 andSDL_NUMEVENTSis 32. The Wi-Fi timer usedSDL_USEREVENT + 8, which evaluates to the out-of-range event type 32.SDL_PushEventtherefore rejected the timer event, so the completedbloomctl network connect statuschild was never polled or reaped.The fix uses the previously unused valid slot
SDL_USEREVENT + 2and enforces the range at compile time.Validation
gcc -std=gnu18 -fsyntax-only -Wall -Wextra ... src/bloomShell/main.cagainst Ubuntu SDL 1.2 headers: passSDL_USEREVENT=24,SDL_NUMEVENTS=32SDL_WaitEventreproduction: event type 26 is delivered and wakes the wait (valid=26 result=0 numevents=32)bloom_shell_runtime,bloom_shell_safe_mode,bloom_shell_settings,bloom_typography,gameswitcher_controls): 48/48 pass in 20.8 sBloomShell*:BloomFrontend*: 212/212 pass in 12.6 sclang-format 21.1.8 --dry-run --Werror src/bloomShell/main.c: passgit diff --check: passThe risk-scoped CI build/static-analysis jobs remain authoritative for the ARM consumer and changed-file cppcheck gate. A redundant broad local cppcheck pass was stopped after it began reporting unchanged legacy style findings; no cppcheck suppression or pipeline bypass is included.
Device evidence
Observed on the USB-powered Mini Plus running the signed, unconfirmed
v0.1.0-dev-2933f706candidate:bloomctl network connect statuscompleted immediately with canonical idle/inactive status[bloomctl]child whose parent was the live Shell processChecking Wi-Fi safety...No radio toggle, Wi-Fi profile mutation, credential operation, update confirmation, or reboot was used to diagnose this issue.
After CI and the protected signed hardware build pass, the exact signed branch artifact is Hot-deployed with the guarded component deployer. Device acceptance requires the child to be reaped, the status surface to leave
Checking Wi-Fi safety..., and Wi-Fi, listener, session, resource, and update invariants to remain stable. The otherwise healthy2933f706Full base was confirmed only to exit the state-machine lock without deliberately causing more multi-boot rollback cycles; the signed corrective Shell overlay remains explicit until the next coherent Full checkpoint supersedes that transitional base.Signed branch candidate
7bf5930eaf03478dcf8a865dcbf8bf4606fd7df90.1.0-dev-7bf5930e199847901bytesfd5db4ed66e5bacf4b561b703b4a2b0f965fdd52da803b2518f3827bd9c3b21723c4373c3ec739688aca0cf30723487af50c48570fecc25f7535fde9b6ce6eb5bloom-shellSHA-256:9c9c6d38ab01743047dc306b83b0ec20e7b57f4f70365c18518e3a83e79c2516Hot deployment result
2933f706Full base was confirmed to exit the updatetestinglock without another multi-boot rollback cyclenet05-sdl-event-7bf5930e-r3-20260830is active2288was reaped; replacement PID3582is guard-ready with three threads[bloomctl]zombie is goneIDLE; update state remainsknown_good; no device reboot occurred192.168.1.180/24; default route and key-only SSH remained availableThe automated framebuffer is coherent on the restarted PICO-8 root surface. The software input injector is not reaching the fresh SDL process, so the final Wi-Fi detail screenshot/status transition remains pending one physical START navigation. This is reported as a limitation rather than inferred as passed.
Dependencies and limitations
mainat the squash merge of NET-05: wire guarded Wi-Fi connect lifecycle #583