From d82038775807faf3dcce7ec72e1f0d5213105888 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 13 Oct 2016 13:39:42 +0200 Subject: [PATCH] Stop wrapping FileManager in an Arc. It already contains an Arc internally. --- components/net/blob_loader.rs | 4 ++-- components/net/filemanager_thread.rs | 9 +++++++++ components/net/resource_thread.rs | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/components/net/blob_loader.rs b/components/net/blob_loader.rs index 1bf931dac32..bb9537e48dd 100644 --- a/components/net/blob_loader.rs +++ b/components/net/blob_loader.rs @@ -23,7 +23,7 @@ use util::thread::spawn_named; // TODO: Check on GET // https://w3c.github.io/FileAPI/#requestResponseModel -pub fn factory(filemanager: Arc>) +pub fn factory(filemanager: FileManager) -> Box, CancellationListener) + Send> { box move |load_data: LoadData, start_chan, classifier, cancel_listener| { spawn_named(format!("blob loader for {}", load_data.url), move || { @@ -35,7 +35,7 @@ pub fn factory(filemanager: Arc>) fn load_blob (load_data: LoadData, start_chan: LoadConsumer, classifier: Arc, - filemanager: Arc>, + filemanager: FileManager, cancel_listener: CancellationListener) { let (chan, recv) = ipc::channel().unwrap(); if let Ok((id, origin, _fragment)) = parse_blob_url(&load_data.url.clone()) { diff --git a/components/net/filemanager_thread.rs b/components/net/filemanager_thread.rs index ac8ad70d1bc..d682ea02569 100644 --- a/components/net/filemanager_thread.rs +++ b/components/net/filemanager_thread.rs @@ -116,6 +116,15 @@ pub struct FileManager { store: Arc>, } +// Not derived to avoid an unnecessary `UI: Clone` bound. +impl Clone for FileManager { + fn clone(&self) -> Self { + FileManager { + store: self.store.clone(), + } + } +} + impl FileManager { pub fn new(ui: &'static UI) -> FileManager { FileManager { diff --git a/components/net/resource_thread.rs b/components/net/resource_thread.rs index 86e382e4bb3..6f596684408 100644 --- a/components/net/resource_thread.rs +++ b/components/net/resource_thread.rs @@ -475,7 +475,7 @@ pub struct CoreResourceManager { devtools_chan: Option>, swmanager_chan: Option>, profiler_chan: ProfilerChan, - filemanager: Arc>, + filemanager: FileManager, cancel_load_map: HashMap>, next_resource_id: ResourceId, } @@ -490,7 +490,7 @@ impl CoreResourceManager { devtools_chan: devtools_channel, swmanager_chan: None, profiler_chan: profiler_chan, - filemanager: Arc::new(FileManager::new(TFD_PROVIDER)), + filemanager: FileManager::new(TFD_PROVIDER), cancel_load_map: HashMap::new(), next_resource_id: ResourceId(0), }