diff options
Diffstat (limited to 'components/net/image_cache.rs')
-rw-r--r-- | components/net/image_cache.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/components/net/image_cache.rs b/components/net/image_cache.rs index e3d31b11736..46a2a4ea111 100644 --- a/components/net/image_cache.rs +++ b/components/net/image_cache.rs @@ -7,7 +7,7 @@ use std::collections::hash_map::Entry::{Occupied, Vacant}; use std::sync::{Arc, Mutex}; use std::{mem, thread}; -use compositing_traits::{CrossProcessCompositorApi, SerializableImageData}; +use compositing_traits::{CrossProcessCompositorApi, ImageUpdate, SerializableImageData}; use imsz::imsz_from_reader; use ipc_channel::ipc::IpcSharedMemory; use log::{debug, warn}; @@ -675,6 +675,20 @@ impl ImageCache for ImageCacheImpl { } } +impl Drop for ImageCacheStore { + fn drop(&mut self) { + let image_updates = self + .completed_loads + .values() + .filter_map(|load| match &load.image_response { + ImageResponse::Loaded(image, _) => image.id.map(ImageUpdate::DeleteImage), + _ => None, + }) + .collect(); + self.compositor_api.update_images(image_updates); + } +} + impl ImageCacheImpl { /// Require self.store.lock() before calling. fn add_listener_with_store(&self, store: &mut ImageCacheStore, listener: ImageResponder) { |