releaseImages method

void releaseImages(
  1. Set<String> sources
)

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();
}