Skip to content

Commit eee2450

Browse files
authored
Merge pull request wled#1786 from DerFetzer/fix_fx_sync
Send notification for HTTP API calls with only effects parameters
2 parents e2242f5 + 56cf1c8 commit eee2450

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

wled00/led.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,14 +101,15 @@ void colorUpdated(int callMode)
101101
//Notifier: apply received FX to selected segments only if actually receiving FX
102102
if (someSel) strip.applyToAllSelected = receiveNotificationEffects;
103103

104-
bool fxChanged = strip.setEffectConfig(effectCurrent, effectSpeed, effectIntensity, effectPalette);
104+
bool fxChanged = strip.setEffectConfig(effectCurrent, effectSpeed, effectIntensity, effectPalette) || effectChanged;
105105
bool colChanged = colorChanged();
106106

107107
//Notifier: apply received color to selected segments only if actually receiving color
108108
if (someSel) strip.applyToAllSelected = receiveNotificationColor;
109109

110110
if (fxChanged || colChanged)
111111
{
112+
effectChanged = false;
112113
if (realtimeTimeout == UINT32_MAX) realtimeTimeout = 0;
113114
if (isPreset) {isPreset = false;}
114115
else {currentPreset = -1;}

wled00/set.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -812,10 +812,22 @@ bool handleSet(AsyncWebServerRequest *request, const String& req, bool apply)
812812
{
813813
WS2812FX::Segment& seg = strip.getSegment(i);
814814
if (!seg.isSelected()) continue;
815-
if (effectCurrent != prevEffect) seg.mode = effectCurrent;
816-
if (effectSpeed != prevSpeed) seg.speed = effectSpeed;
817-
if (effectIntensity != prevIntensity) seg.intensity = effectIntensity;
818-
if (effectPalette != prevPalette) seg.palette = effectPalette;
815+
if (effectCurrent != prevEffect) {
816+
seg.mode = effectCurrent;
817+
effectChanged = true;
818+
}
819+
if (effectSpeed != prevSpeed) {
820+
seg.speed = effectSpeed;
821+
effectChanged = true;
822+
}
823+
if (effectIntensity != prevIntensity) {
824+
seg.intensity = effectIntensity;
825+
effectChanged = true;
826+
}
827+
if (effectPalette != prevPalette) {
828+
seg.palette = effectPalette;
829+
effectChanged = true;
830+
}
819831
}
820832

821833
if (col0Changed) {

wled00/wled.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,7 @@ WLED_GLOBAL byte effectCurrent _INIT(0);
425425
WLED_GLOBAL byte effectSpeed _INIT(128);
426426
WLED_GLOBAL byte effectIntensity _INIT(128);
427427
WLED_GLOBAL byte effectPalette _INIT(0);
428+
WLED_GLOBAL bool effectChanged _INIT(false);
428429

429430
// network
430431
WLED_GLOBAL bool udpConnected _INIT(false), udp2Connected _INIT(false), udpRgbConnected _INIT(false);

0 commit comments

Comments
 (0)