aboutsummaryrefslogtreecommitdiffstats
path: root/components/net/image_cache.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/net/image_cache.rs')
-rw-r--r--components/net/image_cache.rs16
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) {