6580 Commits

Author SHA1 Message Date
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
Frank
30fcd6efad segment & bus.show mutex redesign
* separate mutexes for improved performance:
  - busses.show and effect drawing
  - critical changes to segment vector
  - block out critical segment changes while strip.service() loops over segments
* UDP realtime acquires mutex before drawing
  - prevents corrupted outputs, caused by parallel tasks updating pixels while busses.show() runs
2025-12-21 23:56:09 +01:00
Frank
c520d75729 prevent race conditions in realtimeLock / exitRealtime 2025-12-21 23:48:19 +01:00
Frank
21a452333e setRealtimePixel speedup
cache strip.getMainSegment(),  strip.getLengthTotal()), seg.length() instead of re-calculating them for each pixel
2025-12-21 23:11:15 +01:00
Frank
577d80d2ef segment drawing robustness improvements
* segment::fill() is also called outside the service loop - make sure that size is always calculated correctly
* leave _currentSeg in a meaningful state after strip.service()
2025-12-21 23:08:50 +01:00
Frank
b9e7621cd6 platformio.ini updates to include PixelForge
unrelated: enable some features that still fit into flash
2025-12-21 01:11:18 +01:00
Frank
ab4ae9a6b8 Merge branch 'mdev' into pixelforge_backport 2025-12-21 00:31:54 +01:00
Frank
62d938d8ba Add build info display for github builds
Added checks for release build environment and updated build info display.
2025-12-21 00:29:52 +01:00
Frank
37764ec3b9 UX improvements
- add buttons for PixelForge and PixelArt (settings page, below "file system" button
- abort build when PixelForge requested but GIF support missing
- "support" PixelMagic with error message - known issues with bigger images
2025-12-20 23:55:59 +01:00
Frank
855e6737be minor html and JS fixes
* avoid implicit creation of global vars
* removed stray </small>
* fix assignment with undefined variables
2025-12-20 21:19:55 +01:00
Frank
7df63db744 and mutex for all
revised mutex and critical section handling for segment drawing
- simplified code with macros (no more #if ESP32 ... #endif)
- remove some critical sections (prevents interrupt stalling)
- added mutex to functions that change the list of segments
- added mutexes to all (potential) background drawing code
- use recursive mutexes to prevent accidental self-locking of tasks
2025-12-20 17:13:52 +01:00
Frank
e5a3942610 fix for "giving a semaphore never taken" 2025-12-20 01:14:13 +01:00
Frank
0d24bb3b73 E1.31 kill switch
unchecking "Receive UDP realtime" in Sync settings will immediately end realtime display, also over webSockets.
2025-12-20 00:31:43 +01:00
Frank
c25f082231 improve stability of DDP via tcp_task (websockets)
* protect pixel buffer changes with critical section
* protect segment list modification with critical section
* make _isServicing and _triggered atomic (move out of packed bitarray)
* allow custom timeout for waitUntilIdle - DDP needs a longer timeout
* protect strip.show() and effect drawing functions with mutex, to prevent crashes
2025-12-19 18:13:20 +01:00
Frank
10c20b7a4b serve common.js via serveSettingsJS
this got lost while backporting upstream code
2025-12-19 13:25:15 +01:00
Frank
eeb4973a2e support common.js (future support for VideoLab tool) 2025-12-19 00:51:39 +01:00
Frank
45b97e8028 PixelForge adaptations for version 14.x
* different call for listing images
* different call for deleting images
* minor cleanups
2025-12-18 23:51:48 +01:00