LR-VIEW-PHOTOGRID: a thumbnail that can't be read is tried again only when its photo changes (#2682)

The renderer remembered a failed render until the catalog revision moved,
and any op moved it: face results and metadata reads for other photos at
launch sent every undecodable file back to the decoder (issue #2682: 37
tries each in 154 s of idle). Renderer::follow_catalog asks the catalog
which photos changed (touched_since) and keeps a failure parked unless its
own photo is among them; when the catalog can't say, every failure is
retried as before. The failure record keeps its shape.

Test: render::thumbnail_tests::a_failed_thumbnail_is_retried_only_when_its_photo_changes
(fails on main at the "another photo's change retries nothing" check).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
insideTheFlux
2026-10-23 19:04:24 -07:00
co-authored by Claude Opus 5.5
parent 98702b5c44
commit 70a2109de2
2 changed files with 65 additions and 3 deletions
+7
View File
@@ -8,6 +8,13 @@
Before, the field took the focus back every frame, so only Return and Esc got you out of it. Return still
confirms and Esc still cancels.
### A thumbnail that can't be read is tried again only when its photo changes
- A file the grid can't draw (a damaged JPEG, a file the decoders can't read) was decoded again after every change to
the library, even a change to another photo: face recognition and metadata reads at launch made each such file
fail 20 to 40 times in a few minutes, one log warning each time (issue #2682). It is now tried again when that photo
changes (Locate Missing File, Reload, an edit) or when the library can't say which photos changed. A file that comes
back on its own, such as a drive plugged in again, is tried again at the next launch or when its photo is touched.
### Foreign XMP metadata survives namespace-prefix collisions
- Saving a sidecar keeps another application's properties even when its namespace uses prefixes such as `lc`
or `xmp`. Those foreign properties no longer become LightCraft settings or ratings when imported.