[Prestaties][P2] Automatisch doorspelen herbouwt de hele presentatorweergave 20× per seconde #2633

Closed
opened 2026-10-28 16:31:51 +00:00 by brenno · 0 comments
Owner

Symptoom

Tijdens automatisch doorspelen of een getimede presentatie draait de processor continu; op lichtere laptops hapert de presentatie en loopt de ventilator.

Oorzaak

Voor een vloeiende voortgangsbalk tikt er een Timer.periodic(50 ms):

  • presenter_playback.dart:95-106: elke tik _rebuild(() => _progress = p) — een setState op de hele presentatorstate;
  • presenter_timed_mode.dart:101-125: _ticker van 50 ms die via _emit hetzelfde doet.

Dat is 20 keer per seconde een herbouw van de complete presentatorweergave: huidige dia, volgende dia, notities, raster, overlays — terwijl alleen de balk verandert.

Voorgestelde oplossing

De voortgang in een ValueNotifier<double> (of een AnimationController met de dia-duur) en alleen de voortgangsbalk eromheen in een ValueListenableBuilder/AnimatedBuilder. De Timer blijft alleen voor het doorschakelen nodig (één Timer met de resterende duur, geen periodieke).

Wat overeind moet blijven

Pauzeren/hervatten, doorschakelen op media-einde, de beamer die de voortgang volgt (via _emit(audienceChanged: …) alleen bij een echte wissel).

Toets

Widgettest: tijdens automatisch doorspelen herbouwt de dia-preview 0 keer per tik (build-teller), de balk wel.

Onderdeel van de prestatie- en stabiliteitsinspectie van 28-10-2026 (EPIC #2637).

## Symptoom Tijdens automatisch doorspelen of een getimede presentatie draait de processor continu; op lichtere laptops hapert de presentatie en loopt de ventilator. ## Oorzaak Voor een vloeiende voortgangsbalk tikt er een `Timer.periodic(50 ms)`: - `presenter_playback.dart:95-106`: elke tik `_rebuild(() => _progress = p)` — een `setState` op de **hele** presentatorstate; - `presenter_timed_mode.dart:101-125`: `_ticker` van 50 ms die via `_emit` hetzelfde doet. Dat is 20 keer per seconde een herbouw van de complete presentatorweergave: huidige dia, volgende dia, notities, raster, overlays — terwijl alleen de balk verandert. ## Voorgestelde oplossing De voortgang in een `ValueNotifier<double>` (of een `AnimationController` met de dia-duur) en alleen de voortgangsbalk eromheen in een `ValueListenableBuilder`/`AnimatedBuilder`. De `Timer` blijft alleen voor het doorschakelen nodig (één `Timer` met de resterende duur, geen periodieke). ## Wat overeind moet blijven Pauzeren/hervatten, doorschakelen op media-einde, de beamer die de voortgang volgt (via `_emit(audienceChanged: …)` alleen bij een echte wissel). ## Toets Widgettest: tijdens automatisch doorspelen herbouwt de dia-preview 0 keer per tik (build-teller), de balk wel. Onderdeel van de prestatie- en stabiliteitsinspectie van 28-10-2026 (EPIC #2637).
brenno 2026-10-29 12:20:16 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2633
No description provided.