fix for outputs not working any more when receiving DDP or art-net pixels
This disables bus caching (and related speedups) while receiving realtime UDP pixels. Its still totally unclear to me what happens, and why disabling the cache solves problems.
This commit is contained in:
@@ -153,11 +153,22 @@ void notify(byte callMode, bool followUp)
|
||||
void realtimeLock(uint32_t timeoutMs, byte md)
|
||||
{
|
||||
if (!realtimeMode && !realtimeOverride) {
|
||||
// this code runs once when we enter realtime mode
|
||||
// WLEDMM begin - we need to init segment caches before putting any pixels
|
||||
if (strip.isServicing()) {
|
||||
USER_PRINTLN(F("realtimeLock() enter RTM: strip is still drawing effects."));
|
||||
strip.waitUntilIdle();
|
||||
}
|
||||
strip.service(); // WLEDMM make sure that all segments are properly initialized
|
||||
busses.invalidateCache(true);
|
||||
// WLEDMM end
|
||||
|
||||
uint16_t stop, start;
|
||||
if (useMainSegmentOnly) {
|
||||
Segment& mainseg = strip.getMainSegment();
|
||||
start = mainseg.start;
|
||||
stop = mainseg.stop;
|
||||
mainseg.map1D2D = M12_Pixels; // WLEDMM no mapping
|
||||
mainseg.freeze = true;
|
||||
} else {
|
||||
start = 0;
|
||||
@@ -199,6 +210,7 @@ void exitRealtime() {
|
||||
} else {
|
||||
strip.show(); // possible fix for #3589
|
||||
}
|
||||
busses.invalidateCache(false); // WLEDMM
|
||||
updateInterfaces(CALL_MODE_WS_SEND);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user