mirror of
https://github.com/wled/WLED.git
synced 2025-07-25 03:36:45 +00:00
Fix for realtime drawing on main segment
This commit is contained in:
parent
be64930ebb
commit
210191b251
@ -39,6 +39,7 @@ void handleDDPPacket(e131_packet_t* p) {
|
|||||||
realtimeLock(realtimeTimeoutMs, REALTIME_MODE_DDP);
|
realtimeLock(realtimeTimeoutMs, REALTIME_MODE_DDP);
|
||||||
|
|
||||||
if (!realtimeOverride || (realtimeMode && useMainSegmentOnly)) {
|
if (!realtimeOverride || (realtimeMode && useMainSegmentOnly)) {
|
||||||
|
if (useMainSegmentOnly) strip.getMainSegment().beginDraw();
|
||||||
for (unsigned i = start; i < stop; i++, c += ddpChannelsPerLed) {
|
for (unsigned i = start; i < stop; i++, c += ddpChannelsPerLed) {
|
||||||
setRealtimePixel(i, data[c], data[c+1], data[c+2], ddpChannelsPerLed >3 ? data[c+3] : 0);
|
setRealtimePixel(i, data[c], data[c+1], data[c+2], ddpChannelsPerLed >3 ? data[c+3] : 0);
|
||||||
}
|
}
|
||||||
@ -147,6 +148,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
|
|||||||
if (realtimeOverride && !(realtimeMode && useMainSegmentOnly)) return;
|
if (realtimeOverride && !(realtimeMode && useMainSegmentOnly)) return;
|
||||||
|
|
||||||
wChannel = (availDMXLen > 3) ? e131_data[dataOffset+3] : 0;
|
wChannel = (availDMXLen > 3) ? e131_data[dataOffset+3] : 0;
|
||||||
|
if (useMainSegmentOnly) strip.getMainSegment().beginDraw();
|
||||||
for (unsigned i = 0; i < totalLen; i++)
|
for (unsigned i = 0; i < totalLen; i++)
|
||||||
setRealtimePixel(i, e131_data[dataOffset+0], e131_data[dataOffset+1], e131_data[dataOffset+2], wChannel);
|
setRealtimePixel(i, e131_data[dataOffset+0], e131_data[dataOffset+1], e131_data[dataOffset+2], wChannel);
|
||||||
break;
|
break;
|
||||||
@ -164,6 +166,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
|
|||||||
strip.setBrightness(bri, true);
|
strip.setBrightness(bri, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (useMainSegmentOnly) strip.getMainSegment().beginDraw();
|
||||||
for (unsigned i = 0; i < totalLen; i++)
|
for (unsigned i = 0; i < totalLen; i++)
|
||||||
setRealtimePixel(i, e131_data[dataOffset+1], e131_data[dataOffset+2], e131_data[dataOffset+3], wChannel);
|
setRealtimePixel(i, e131_data[dataOffset+1], e131_data[dataOffset+2], e131_data[dataOffset+3], wChannel);
|
||||||
break;
|
break;
|
||||||
@ -308,6 +311,7 @@ void handleE131Packet(e131_packet_t* p, IPAddress clientIP, byte protocol){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (useMainSegmentOnly) strip.getMainSegment().beginDraw();
|
||||||
if (!is4Chan) {
|
if (!is4Chan) {
|
||||||
for (unsigned i = previousLeds; i < ledsTotal; i++) {
|
for (unsigned i = previousLeds; i < ledsTotal; i++) {
|
||||||
setRealtimePixel(i, e131_data[dmxOffset], e131_data[dmxOffset+1], e131_data[dmxOffset+2], 0);
|
setRealtimePixel(i, e131_data[dmxOffset], e131_data[dmxOffset+1], e131_data[dmxOffset+2], 0);
|
||||||
|
@ -687,10 +687,11 @@ void setRealtimePixel(uint16_t i, byte r, byte g, byte b, byte w)
|
|||||||
b = gamma8(b);
|
b = gamma8(b);
|
||||||
w = gamma8(w);
|
w = gamma8(w);
|
||||||
}
|
}
|
||||||
|
uint32_t col = RGBW32(r,g,b,w);
|
||||||
if (useMainSegmentOnly) {
|
if (useMainSegmentOnly) {
|
||||||
strip.getMainSegment().setPixelColor(pix, r, g, b, w); // this expects that strip.getMainSegment().beginDraw() has been called in handleNotification()
|
strip.getMainSegment().setPixelColor(pix, col); // this expects that strip.getMainSegment().beginDraw() has been called in handleNotification()
|
||||||
} else {
|
} else {
|
||||||
strip.setPixelColor(pix, r, g, b, w);
|
strip.setPixelColor(pix, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user