@@ -1254,7 +1254,6 @@ void WS2812FX::service() {
12541254 // last condition ensures all solid segments are updated at the same time
12551255 if (mustUpdate || seg.needsUpdate (nowUp)) {
12561256 doShow = true ;
1257- unsigned frameDelay = FRAMETIME;
12581257
12591258 if (!seg.freeze ) { // only run effect function if not frozen
12601259 // Effect blending
@@ -1264,7 +1263,7 @@ void WS2812FX::service() {
12641263 seg.beginDraw (prog); // set up parameters for get/setPixelColor() (will also blend colors and palette if blend style is FADE)
12651264 _currentSegment = &seg; // set current segment for effect functions (SEGMENT & SEGENV)
12661265 // workaround for on/off transition to respect blending style
1267- frameDelay = (*_mode[seg.mode ])(); // run new/current mode (needed for bri workaround)
1266+ seg. next_time = nowUp + (*_mode[seg.mode ])(); // run new/current mode (needed for bri workaround)
12681267 seg.call ++;
12691268 }
12701269 // if segment is in transition and no old segment exists we don't need to run the old mode
@@ -1278,14 +1277,12 @@ void WS2812FX::service() {
12781277 segO->beginDraw (prog); // set up palette & colors (also sets draw dimensions), parent segment has transition progress
12791278 _currentSegment = segO; // set current segment
12801279 // workaround for on/off transition to respect blending style
1281- frameDelay = min (frameDelay, ( unsigned )( *_mode[segO->mode ])() ); // run old mode (needed for bri workaround; semaphore!!)
1280+ segO-> next_time = nowUp + ( *_mode[segO->mode ])(); // run old mode (needed for bri workaround; semaphore!!)
12821281 segO->call ++; // increment old mode run counter
12831282 Segment::modeBlend (false ); // unset semaphore
12841283 }
12851284 }
12861285 }
1287-
1288- seg.next_time = nowUp + frameDelay;
12891286 }
12901287 _segment_index++;
12911288 }
0 commit comments