Remove per-source speed, fix device dirty check, and add frontend caching
Speed is now exclusively controlled via sync clocks — CSS sources no longer carry their own speed/cycle_speed fields. Streams default to 1.0× when no clock is assigned. Also fixes false-positive dirty check on the device settings modal (array reference comparison) and converts several frontend modules to use DataCache for consistent API response caching. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -684,7 +684,7 @@ class StaticColorStripStream(ColorStripStream):
|
||||
speed = clock.speed
|
||||
t = clock.get_time()
|
||||
else:
|
||||
speed = float(anim.get("speed", 1.0))
|
||||
speed = 1.0
|
||||
t = wall_start
|
||||
atype = anim.get("type", "breathing")
|
||||
n = self._led_count
|
||||
@@ -798,7 +798,6 @@ class ColorCycleColorStripStream(ColorStripStream):
|
||||
self._color_list = [
|
||||
c for c in raw if isinstance(c, list) and len(c) == 3
|
||||
] or default
|
||||
self._cycle_speed = float(source.cycle_speed) if source.cycle_speed else 1.0
|
||||
self._auto_size = not source.led_count
|
||||
self._led_count = source.led_count if source.led_count > 0 else 1
|
||||
self._rebuild_colors()
|
||||
@@ -892,7 +891,7 @@ class ColorCycleColorStripStream(ColorStripStream):
|
||||
speed = clock.speed
|
||||
t = clock.get_time()
|
||||
else:
|
||||
speed = self._cycle_speed
|
||||
speed = 1.0
|
||||
t = wall_start
|
||||
n = self._led_count
|
||||
num = len(color_list)
|
||||
@@ -1067,7 +1066,7 @@ class GradientColorStripStream(ColorStripStream):
|
||||
speed = clock.speed
|
||||
t = clock.get_time()
|
||||
else:
|
||||
speed = float(anim.get("speed", 1.0))
|
||||
speed = 1.0
|
||||
t = wall_start
|
||||
atype = anim.get("type", "breathing")
|
||||
n = self._led_count
|
||||
|
||||
@@ -203,7 +203,6 @@ class EffectColorStripStream(ColorStripStream):
|
||||
|
||||
def _update_from_source(self, source) -> None:
|
||||
self._effect_type = getattr(source, "effect_type", "fire")
|
||||
self._speed = float(getattr(source, "speed", 1.0))
|
||||
self._auto_size = not source.led_count
|
||||
self._led_count = source.led_count if source.led_count and source.led_count > 0 else 1
|
||||
self._palette_name = getattr(source, "palette", None) or _EFFECT_DEFAULT_PALETTE.get(self._effect_type, "fire")
|
||||
@@ -307,7 +306,7 @@ class EffectColorStripStream(ColorStripStream):
|
||||
self._effective_speed = clock.speed
|
||||
else:
|
||||
anim_time = wall_start
|
||||
self._effective_speed = self._speed
|
||||
self._effective_speed = 1.0
|
||||
|
||||
n = self._led_count
|
||||
if n != _pool_n:
|
||||
|
||||
Reference in New Issue
Block a user