Frank
32ed6cafc1
ledmap parser robustness improvements
...
* do not read past end of array "]"
* digest "unexpected" order of tags (always rewind input)
* better user message on success
2025-12-30 22:07:12 +01:00
Frank
9db1022b9d
ledmap parser bugfix
...
make our custom parser robust against pretty printed ledmap.json
expected <"map":[> but user file had <"map": [>
2025-12-30 20:13:40 +01:00
Frank
617ea8fa04
bugfix: ledmap.json discarded too early
...
* added missing check for "ledmap.json" file => always applied
* added missing check for ledmap1...10
* setupMatrix test for "unity" ledmap was too early - removed (need to find a better place for this)
2025-12-30 15:46:47 +01:00
Frank
868b2cad4e
savePreset: restore quickload on early exit
...
* restore quickload on early exit
* replace magic numbers with constants
2025-12-30 02:20:10 +01:00
Frank
80b906999b
requestJSONBufferLock() variable timeout
...
* default timeout = 1800ms
* reduced timeout for ws (300ms)
2025-12-30 01:57:46 +01:00
Frank
5739a54287
savePreset() error case bugfix
...
* Keeps the status machine coherent: no spurious async save, no lost pending playlist write, no change to successful paths.
* Aligns behavior with the already corrected mutex‑failure path, making both early exits consistent.
2025-12-29 21:35:10 +01:00
Frank
e1c7e816fe
preseve playlistSave in case of mutex failure
2025-12-29 21:22:12 +01:00
Frank
b863cf3ed8
savePreset() fix mutex leak in early return path
...
early return considered harmful 😆
2025-12-29 21:17:02 +01:00
Frank
91dc9a5b5a
restore revious presetToSave in case that mutex acquisition fails
2025-12-29 21:09:04 +01:00
Frank
d505dcc6a8
fix presets.json corruption, part 2: protect deletePresets
...
deletePreset() also needs to acquire presetFileMux before writing.
2025-12-29 21:02:06 +01:00
Frank
76cf309373
(minor) fix wrong debug tag
2025-12-29 20:54:05 +01:00
Frank
2a56f9b658
fix presets.json corruption, part 2: mutex for presets file writing
...
prevents concurrent presets.json writes from doSaveState() and savePreset()
2025-12-29 20:48:07 +01:00
Frank
6247ee066d
fix presets.json corruption, part 1: avoid re-assigning open file pointer
...
* this prevents "open after open", that could lead to file corruption when "f" was still holding some changes in its buffer (written out with f.close())
2025-12-29 20:08:34 +01:00
Frank
35c847404c
Merge branch 'mdev' into pixelforge_backport
2025-12-29 19:47:51 +01:00
Frank
4521ba848c
align extractModeSlider() and extractModeNames() behaviour
...
* document behavior
* both functions are only called from usermods, and all calls are already correctly passing maxLen = buffersize -1
2025-12-29 19:43:42 +01:00
Damian Schneider
dab6a96b78
revert change to extractModeName, add comment for clarification
2025-12-29 19:38:53 +01:00
Frank
103e7db83f
post merge fix, build 2512291
2025-12-29 14:45:11 +01:00
Damian Schneider
3785ae9a20
fix FX checkmark sync
2025-12-29 14:37:36 +01:00
Will Tatam
45e8c63c2c
Merge pull request #5031 from wled/add-check-diff
...
Add segment checkmarks to `differs()` check
2025-12-29 14:30:49 +01:00
Damian Schneider
b2578703b2
minor bugfixes as suggested by the rabbit
...
- PulLightControl UM: dont release a lock you do not own
- off-by-one error in extractModeSlider (used only in rotary in UM)
- safety check in playlist in case something goes horribly wrong
2025-12-29 14:16:52 +01:00
Damian Schneider
eb55b4f2a5
adding link to WLED VidoLab
2025-12-27 20:07:12 +01:00
copilot-swe-agent[bot]
99e0743281
Fix Hub75 shown incorrectly in LED output dropdowns
...
Call hideHub75() after dynamically adding new LED outputs to ensure Hub75 options are removed when Hub75 support is not compiled in.
Co-authored-by: netmindz <442066+netmindz@users.noreply.github.com >
2025-12-25 10:06:30 +00:00
copilot-swe-agent[bot]
fc84725ae4
Initial plan
2025-12-25 09:58:52 +00:00
Frank
941415b24d
fix reference error in pxmagic.htm
...
``index`` was undefined
2025-12-23 02:32:47 +01:00
Frank
bde1ac9c76
clarification
...
bedtime.
2025-12-23 02:12:06 +01:00
Frank
b8c0f8a28b
fix akward error message
...
I start writing gibberish - time to go to bed 😄
2025-12-23 02:05:56 +01:00
Frank
2775b16141
clarifications (minor)
...
* replace delay by vTaskDelay (same behaviour)
* degrade user message to debug (expected behaviour -> no message)
* add pdMS_TO_TICKS to esp32SemTake macro (future proof)
2025-12-23 01:59:59 +01:00
Frank
655330d1a6
remove stupid "live forever" default
2025-12-23 01:42:55 +01:00
Frank
3c30edb70a
fix typo
2025-12-23 01:26:32 +01:00
Frank
5f3ab42520
reduced freeze time when updating presets
...
postpone suspendStripService until the first segment operation is needed.
2025-12-23 01:18:46 +01:00
Damian Schneider
9fe4d788cd
use constant instead of magic number in pixelforge
2025-12-23 00:49:22 +01:00
Frank
d6e2473ea7
small update for code clarity
...
wraping esp32SemGive inro #ifdef ESP32 does not change the behavior, but makes the logic easier to understand.
2025-12-23 00:41:45 +01:00
Frank
c185f37791
improved mutex error handling
...
- debug message in case of "unexpected" mutex errors
- removed experimental delay() in requestJSONBufferLock
2025-12-23 00:33:28 +01:00
Frank
1c2e6aac6e
oppsie
2025-12-23 00:11:40 +01:00
Frank
d3076c43ec
use a mutex to make requestJSONBufferLock / releaseJSONBufferLock robust
...
similar to upstream https://github.com/wled/WLED/pull/4089 ,
but with slightly different "failure" logic.
2025-12-23 00:05:16 +01:00
Frank
9b5ae9fff9
bugfix: suspendStripService held too long across stateUpdated() call
...
see discussion in https://github.com/MoonModules/WLED-MM/pull/293#issuecomment-3684424421
2025-12-22 23:58:19 +01:00
Frank
4345b32f97
protect WS2812FX::resetSegments boundsOnly path
...
the "boundsOnly" case can lead to ldsrgb re-allocation - better to protect it with segmentMux, too
2025-12-22 18:33:46 +01:00
Frank
39344382c7
WS2812FX::service() cleanup
...
- _isServicing is not critical any more -> move back into bitfield
- remove experimental deactivated code from WS2812FX::service()
2025-12-22 18:10:51 +01:00
Frank
68a76ff442
minor refactoring of critical sections
...
- define dummy macros for 8266, to avoid #ifdef ESP32
- small hint for readers who were not able to play arcade games in the 1980's ;-)
2025-12-22 17:59:22 +01:00
Frank
7459cbd2e2
setRealtimePixel robustness improvement
...
avoid drawing negative pixel addresses (could happen when arlsOffset is < 0)
2025-12-22 01:38:49 +01:00
Frank
d3291cc5e5
fix off-by-one in dnrgbw handler
2025-12-22 01:32:47 +01:00
Frank
6993de1c8a
debug message when realtimeLock fails, and fixing a few typos
2025-12-22 01:21:33 +01:00
Frank
f510bb075c
bugfix: allow udp realtime mode 5 (dnrgbw)
...
previous condition would prevent the existing handler from actually executing
2025-12-22 01:07:42 +01:00
Frank
cb94cfafae
extra debug message when Segment::setUp cannot get the mutex
2025-12-22 00:59:57 +01:00
Frank
bf6dbf0da4
fix realtimeOverride behaviour
...
the previous condition was not aligned with the override condition used in other places
2025-12-22 00:52:24 +01:00
Frank
fe63ebf1b7
deSerializeSegment robustness improvement
...
avoid creating an inconsistent configuration in case the mutex acquisition fails.
2025-12-22 00:39:11 +01:00
Frank
1038421544
atomic pointer swap in allocLeds()
2025-12-22 00:31:53 +01:00
Frank
af8eba6dfa
use critical section in exitRealtime
...
the critical section ensures that cache clearing is performed as an atomic operation without task switch
2025-12-22 00:20:34 +01:00
Frank
50cc6f4c28
comment correction
2025-12-22 00:07:27 +01:00
Frank
73c54d7a57
replace potentially infinite wait with 2100ms max
...
better to end with an inconsistent state, than risk a lock-up until reset
2025-12-22 00:05:54 +01:00