releaseImages method
Invalidates pictures that retain evicted decoded sources. Raster work is conservatively invalidated too; pending recordings release when settled.
Implementation
void releaseImages(Set<String> sources) {
bool usesImage(ResolvedElement element) =>
element is ResolvedShape &&
element.images.any((image) => sources.contains(image.uri));
final victims = <Object>[];
for (final entry in _pictures.entries) {
final revision = entry.value.revision;
if ((revision is ResolvedElement && usesImage(revision)) ||
(revision is _PaintBatchKey &&
revision.entries.any((entry) => usesImage(entry.element)))) {
victims.add(entry.key);
}
}
for (final key in victims) {
_pictures.remove(key)?.picture.dispose();
}
raster.clear();
}