[Prestaties][P3] Callout-dia: kwaliteitscontrole leest per toetsaanslag synchroon de beeldkop — de sync-IO-poort ziet lib/services niet #2685
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#2685
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptoom
Typen op een dia met callouts (bullets-met-beeld plus markeringen) kost per toetsaanslag op de UI-isolate 2 tot 4 synchrone realpath-aanroepen en een synchrone open/lees/sluit van de afbeelding (tot 1 MiB). Op een netwerkschijf of in een OneDrive-map onder Windows is dat merkbaar. Het is dezelfde klasse als #2624.
Oorzaak
deckQualityRawProvideranalyseert de bewerkte dia bij elke toetsaanslag opnieuw. De memo werkt per dia-identiteit, en de bewerkte dia is na elke aanslag een nieuw object._checkCalloutClip(lib/services/slide_quality/slide_quality_analyzer_callouts.dart:155-172) roept twee functies aan:resolveContainedRealPath(lib/utils/project_path.dart:19-45): tweemaalresolveSymbolicLinksSyncplustypeSync;readImageDimensions(lib/utils/image_dimensions.dart:27-46):existsSync,typeSync,lengthSync,openSyncenreadSynctot 1 MiB.tool/check_conventions.dart:1028-1035) scant alleenlib/widgetsenlib/state. Helpers inlib/servicesenlib/utilsdie vanuit build of een provider lopen, ziet hij niet.typeSync,isDirectorySync,isFileSyncenisLinkSyncontbreken bovendien in de regex (r. 984-994).Voorgestelde oplossing
slide.imagePath(of de versiestempel uitimageVersionOf) veranderd is ten opzichte van de vorige analyse van dezelfde dia-id. Typen in een bullet raakt het beeld niet. Een kleine map opgelost pad + versie → afmeting is genoeg.typeSync|isDirectorySync|isFileSync|isLinkSynctoe aan_syncIoCall, en tellib/services/slide_quality/mee als UI-bereikbaar, met de huidige stand als basislijn (ratchet).Wat overeind moet blijven
image_crop_dialog, de koplezing incallout_editor, #1853) houden hun reden.Toets
Unit: analyseer dezelfde callout-dia twee keer met alleen een andere bullettekst. Het pad wordt dan één keer gelezen (teller-naad op
readImageDimensions).Gevonden bij codelezing tijdens de vervolginspectie van 31-10-2026. Niet gemeten.
Opgepakt. Tak: fix/vervolginspectie-3110. Verwachte reikwijdte: de bestanden die in de oorzaak van dit issue staan, plus een regressietest.
Opgepakt. Tak: fix/vervolginspectie-3110. Verwachte reikwijdte: lib/services/slide_quality/slide_quality_analyzer_callouts.dart, tool/check_conventions.dart.
Staat op main in
a6b4dc066(716509f27). De beeldkop blijft gecachet op pad, stempel en grootte, zodat een tweede analyse die alleen de bullets verandert het bestand niet opnieuw opent. typeSync valt onder de sync-IO-poort en lib/services/slide_quality telt mee. resolveContainedRealPath loopt nog bij elke analyse.Opgelost op main in
a6b4dc066. De zin „per toetsaanslag een synchrone open/lees/sluit van de afbeelding“ is gedekt door de cache in lib/utils/image_dimensions.dart; de toets eist één koplezing. De poort telt typeSync en lib/services/slide_quality/ mee (tool/check_conventions.dart). Niet meegenomen: resolveContainedRealPath loopt nog bij elke analyse.