ui: nonblocking writes for ExperimentalMode + DriverView toggles + cycle-restart
All four put calls fire from the main render thread on user interaction
and block on disk fsync, causing visible UI frame spikes.
Each consumer is safe under nonblocking:
- onboarding inactivity_callback: write-and-forget (~25 ms saved)
- home long-press exp toggle: ui_state.experimental_mode owns visual state (~10 ms)
- onroad exp_button: $held_mode + selfdriveState owns visual state
- restart_needed_callback (OnroadCycleRequested): cross-process signal,
consumer is selfdrived which polls the param
BigParamControl-driven toggles in settings (developer.py, toggles.py)
are intentionally left blocking — those widgets refresh visual state
from disk every frame to mirror external changes, which would race a
nonblocking write.
* ban it!
* some legitimate blunders
* even more!
* this is from commaai/one
* here too
* this too
* ignore rest
* one liner
* Revert "one liner"
This reverts commit d96a1624032aaad829a005b523e579d953cfe690.
* refactor: move button to widgets folder
* refactor: move inputbox to widgets folder
* refactor: move label to widgets folder
* refactor: move list_view to widgets
* refactor: move scroll_panel to widgets
* refactor: move scroller to widgets
* refactor: move toggle to widgets
* refactor: Move widget.py to widgets/__init__.py
* fix: remove extra list_view
* refactor: rearrange some of the imports
* fix: remove extra scroller.py
* fix: Add scroller back
* fix: delete right scroller.py this time
* move scroll_panel back to system/ui/lib
* add todos for label and button
* add _update_state
* nonlya
* visible already does this for us!
* do hud renderer and exp button
* temp
* this really needs some type of timer like QT
* this really needs some type of timer like QT
* todo
* use in model renderer
* Revert "use in model renderer"
This reverts commit d35f774155c9875209d06b8cd0b4849b1d8a60c4.
* no passing rect
* cl
* unused now
* something like this
* need these
* rest
* another pr
* what is this merge conflict
f
* fix mouse down
* rm that!
* fix that
* rearrange
* fix bug where mouse held down on widget, dragged off, then let go
* temp
* fix that
* missing init
* add experimental mode toggle button with visual indicator
* merge master
* implement a temporary state hold after mouse click"
* move to seperate class
---------
Co-authored-by: Shane Smiskol <shane@smiskol.com>