diff options
author | Emilio Cobos Álvarez <ecoal95@gmail.com> | 2016-11-16 11:57:39 +0100 |
---|---|---|
committer | Emilio Cobos Álvarez <ecoal95@gmail.com> | 2016-11-17 18:34:23 +0100 |
commit | 913c874cb55fd0fdc9e8f3a4c34624cd015fac8a (patch) | |
tree | 4526ecefafe0cde2f56cb1e2a4ebffd372e1f70a /components/layout/context.rs | |
parent | f14e7339b5ff95fce0127dce4fe87ce082ab7259 (diff) | |
download | servo-913c874cb55fd0fdc9e8f3a4c34624cd015fac8a.tar.gz servo-913c874cb55fd0fdc9e8f3a4c34624cd015fac8a.zip |
Urlmageddon: Use refcounted urls more often.
Diffstat (limited to 'components/layout/context.rs')
-rw-r--r-- | components/layout/context.rs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/components/layout/context.rs b/components/layout/context.rs index 98e1ffe4092..cb5b9efb0ef 100644 --- a/components/layout/context.rs +++ b/components/layout/context.rs @@ -17,13 +17,13 @@ use net_traits::image::base::Image; use net_traits::image_cache_thread::{ImageCacheChan, ImageCacheThread, ImageResponse, ImageState}; use net_traits::image_cache_thread::{ImageOrMetadataAvailable, UsePlaceholder}; use parking_lot::RwLock; +use servo_url::ServoUrl; use std::cell::{RefCell, RefMut}; use std::collections::HashMap; use std::hash::BuildHasherDefault; use std::rc::Rc; use std::sync::{Arc, Mutex}; use style::context::{LocalStyleContext, StyleContext, SharedStyleContext}; -use url::Url; use util::opts; struct LocalLayoutContext { @@ -83,7 +83,7 @@ pub struct SharedLayoutContext { pub font_cache_thread: Mutex<FontCacheThread>, /// A cache of WebRender image info. - pub webrender_image_cache: Arc<RwLock<HashMap<(Url, UsePlaceholder), + pub webrender_image_cache: Arc<RwLock<HashMap<(ServoUrl, UsePlaceholder), WebRenderImageInfo, BuildHasherDefault<FnvHasher>>>>, } @@ -125,7 +125,7 @@ impl<'a> LayoutContext<'a> { } impl SharedLayoutContext { - fn get_or_request_image_synchronously(&self, url: Url, use_placeholder: UsePlaceholder) + fn get_or_request_image_synchronously(&self, url: ServoUrl, use_placeholder: UsePlaceholder) -> Option<Arc<Image>> { debug_assert!(opts::get().output_file.is_some() || opts::get().exit_after_load); @@ -161,7 +161,7 @@ impl SharedLayoutContext { } } - pub fn get_or_request_image_or_meta(&self, url: Url, use_placeholder: UsePlaceholder) + pub fn get_or_request_image_or_meta(&self, url: ServoUrl, use_placeholder: UsePlaceholder) -> Option<ImageOrMetadataAvailable> { // If we are emitting an output file, load the image synchronously. if opts::get().output_file.is_some() || opts::get().exit_after_load { @@ -190,23 +190,23 @@ impl SharedLayoutContext { } pub fn get_webrender_image_for_url(&self, - url: &Url, + url: ServoUrl, use_placeholder: UsePlaceholder) -> Option<WebRenderImageInfo> { if let Some(existing_webrender_image) = self.webrender_image_cache .read() - .get(&((*url).clone(), use_placeholder)) { + .get(&(url.clone(), use_placeholder)) { return Some((*existing_webrender_image).clone()) } - match self.get_or_request_image_or_meta((*url).clone(), use_placeholder) { + match self.get_or_request_image_or_meta(url.clone(), use_placeholder) { Some(ImageOrMetadataAvailable::ImageAvailable(image)) => { let image_info = WebRenderImageInfo::from_image(&*image); if image_info.key.is_none() { Some(image_info) } else { let mut webrender_image_cache = self.webrender_image_cache.write(); - webrender_image_cache.insert(((*url).clone(), use_placeholder), + webrender_image_cache.insert((url, use_placeholder), image_info); Some(image_info) } |