frobar-ng: Improve animation

This commit is contained in:
Geoffrey Frogeye 2025-01-06 00:56:40 +01:00
parent bfd31bb742
commit ecf831d4ac
Signed by: geoffrey
GPG key ID: C72403E7F82E6AD8

View file

@ -139,13 +139,14 @@ class Section(ComposableText):
# Geometric series, with a cap
ANIM_A = 0.025
ANIM_R = 0.9
ANIM_MIN = 0.001
ANIM_MIN = 0.005
async def animate(self) -> None:
increment = 1 if self.size < self.targetSize else -1
loop = asyncio.get_running_loop()
frameTime = loop.time()
animTime = self.ANIM_A
skipped = 0
while self.size != self.targetSize:
self.size += increment
@ -158,9 +159,12 @@ class Section(ComposableText):
# In case of stress, skip refreshing by not awaiting
if sleepTime > 0:
if skipped > 0:
log.warning(f"Skipped {skipped} animation frame(s)")
skipped = 0
await asyncio.sleep(sleepTime)
else:
log.warning("Skipped an animation frame")
skipped += 1
def setText(self, text: str | None) -> None:
# OPTI Don't redraw nor reset animation if setting the same text