mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
net: Report memory usage for image cache. (#36556)
These changes add a new report for image cache memory usage for each script thread. Testing: Looked at the numbers after browsing various stock photo sites that show galleries of images. Signed-off-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
f16f625c9b
commit
afe98e9e1e
6 changed files with 49 additions and 7 deletions
|
@ -32,6 +32,7 @@ mime = { workspace = true }
|
|||
num-traits = { workspace = true }
|
||||
percent-encoding = { workspace = true }
|
||||
pixels = { path = "../../pixels" }
|
||||
profile_traits = { path = "../profile" }
|
||||
rustls-pki-types = { workspace = true }
|
||||
serde = { workspace = true }
|
||||
servo_arc = { workspace = true }
|
||||
|
|
|
@ -10,6 +10,7 @@ use ipc_channel::ipc::IpcSender;
|
|||
use log::debug;
|
||||
use malloc_size_of_derive::MallocSizeOf;
|
||||
use pixels::{Image, ImageMetadata};
|
||||
use profile_traits::mem::Report;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use servo_url::{ImmutableOrigin, ServoUrl};
|
||||
|
||||
|
@ -36,7 +37,7 @@ pub enum ImageOrMetadataAvailable {
|
|||
/// and image, and returned to the specified event loop when the
|
||||
/// image load completes. It is typically used to trigger a reflow
|
||||
/// and/or repaint.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)]
|
||||
pub struct ImageResponder {
|
||||
pipeline_id: PipelineId,
|
||||
pub id: PendingImageId,
|
||||
|
@ -73,11 +74,11 @@ impl ImageResponder {
|
|||
#[derive(Clone, Debug, Deserialize, MallocSizeOf, Serialize)]
|
||||
pub enum ImageResponse {
|
||||
/// The requested image was loaded.
|
||||
Loaded(#[ignore_malloc_size_of = "Arc"] Arc<Image>, ServoUrl),
|
||||
Loaded(#[conditional_malloc_size_of] Arc<Image>, ServoUrl),
|
||||
/// The request image metadata was loaded.
|
||||
MetadataLoaded(ImageMetadata),
|
||||
/// The requested image failed to load, so a placeholder was loaded instead.
|
||||
PlaceholderLoaded(#[ignore_malloc_size_of = "Arc"] Arc<Image>, ServoUrl),
|
||||
PlaceholderLoaded(#[conditional_malloc_size_of] Arc<Image>, ServoUrl),
|
||||
/// Neither the requested image nor the placeholder could be loaded.
|
||||
None,
|
||||
}
|
||||
|
@ -115,6 +116,8 @@ pub trait ImageCache: Sync + Send {
|
|||
where
|
||||
Self: Sized;
|
||||
|
||||
fn memory_report(&self, prefix: &str) -> Report;
|
||||
|
||||
/// Definitively check whether there is a cached, fully loaded image available.
|
||||
fn get_image(
|
||||
&self,
|
||||
|
|
|
@ -130,7 +130,7 @@ pub enum Window {
|
|||
}
|
||||
|
||||
/// [CORS settings attribute](https://html.spec.whatwg.org/multipage/#attr-crossorigin-anonymous)
|
||||
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
|
||||
#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, MallocSizeOf, PartialEq, Serialize)]
|
||||
pub enum CorsSettings {
|
||||
Anonymous,
|
||||
UseCredentials,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue