Skip to content

fix: perf de la boucle de rendu + zoom, scrub, prises et raccourcis - #58

Merged
DZTic merged 1 commit into
mainfrom
fix/rendering-perf-and-ui-bugs
Jul 1, 2026
Merged

fix: perf de la boucle de rendu + zoom, scrub, prises et raccourcis#58
DZTic merged 1 commit into
mainfrom
fix/rendering-perf-and-ui-bugs

Conversation

@DZTic

@DZTic DZTic commented Jul 1, 2026

Copy link
Copy Markdown
Owner

Correctifs de bugs (perf / fonctionnel / robustesse)

Analyse complète de l'app suivie de la correction de 9 problèmes. Build propre (0 erreur / 0 avertissement), 99/99 tests verts.

Performance

  • Boucle de rendu au repos : OnRendering sort tôt quand rien ne défile (ni lecture, ni scrub, ni enregistrement) et que l'horloge n'a pas bougé → fin des allocations 60 fps et de la pression GC quand l'app est inactive.
  • Sélection en O(1) : HashSet miroir dans ProjectState (IsSelected était O(n) par bloc visible et par frame).

Fonctionnel

  • Zoom : slider aligné sur la plage réelle de l'état (20..1200 px/s) — le zoom n'est plus bridé à 600.
  • Scrub en pause : l'affichage est figé sur la cible au relâchement (plus de retour arrière du playhead le temps que le seek asynchrone aboutisse).
  • Raccourcis clavier : le garde-fou de focus couvre ComboBox/ComboBoxItem/Slider — Retour arrière sur le combo Micro ne supprime plus le bloc sélectionné.
  • Suppression de prise : ne détruit plus le WAV du disque → Ctrl+Z restaure une prise réellement rejouable.

Robustesse / mineur

  • Nettoyage des prises temporaires orphelines aux transitions sûres (nouveau projet, ouverture, fermeture) ; les prises référencées sont préservées.
  • Micro : accès au WaveFileWriter sérialisé par lock (course thread capture vs fermeture thread UI).
  • UI : OnToggleHistory ne met plus en surbrillance le menu « Affichage » (bascule trompeuse).

Inclut aussi la gestion multi-prises par bloc (A/B/C…) — sélection de la prise active, écoute, téléchargement et suppression par prise — déjà en cours et indissociable des correctifs (mêmes fichiers).

Correctifs de bugs (perf / fonctionnel / robustesse) :
- perf: court-circuit de OnRendering au repos (fin des allocations 60 fps
  et de la pression GC quand rien ne defile)
- perf: selection en O(1) via un HashSet miroir dans ProjectState
  (IsSelected etait O(n) par bloc visible et par frame)
- zoom: slider aligne sur la plage reelle de l'etat (20..1200 px/s) —
  le zoom n'est plus bride a 600
- scrub: fige l'affichage sur la cible en pause (plus de retour arriere
  du playhead au relachement, le temps que le seek asynchrone aboutisse)
- raccourcis: le garde-fou de focus couvre ComboBox/ComboBoxItem/Slider
  (Retour arriere sur le combo Micro ne supprime plus le bloc selectionne)
- prises: la suppression d'une prise ne detruit plus le WAV (Ctrl+Z
  restaure une prise rejouable) ; nettoyage des WAV temporaires orphelins
  aux transitions sures (nouveau projet, ouverture, fermeture)
- micro: acces au WaveFileWriter serialise par lock (course thread capture
  vs fermeture thread UI)
- ui: OnToggleHistory ne met plus en surbrillance le menu « Affichage »

Inclut aussi la gestion multi-prises par bloc (A/B/C…) : selection de la
prise active, ecoute, telechargement et suppression par prise.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@DZTic
DZTic merged commit 97a60f9 into main Jul 1, 2026
1 check passed
@DZTic
DZTic deleted the fix/rendering-perf-and-ui-bugs branch July 1, 2026 19:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant