From 8dfbfc2c48f5c896e538534368af964f08ecb67a Mon Sep 17 00:00:00 2001 From: Corey Farwell Date: Fri, 9 Dec 2016 11:00:24 -1000 Subject: [PATCH] Remove `Constellation::child_processes`. Fixes https://github.com/servo/servo/issues/11459. --- components/constellation/constellation.rs | 13 ++-------- components/constellation/pipeline.rs | 30 ++++++++++------------- 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs index c34f9b1597c7..2e6b5071d412 100644 --- a/components/constellation/constellation.rs +++ b/components/constellation/constellation.rs @@ -35,7 +35,7 @@ use net_traits::image_cache_thread::ImageCacheThread; use net_traits::pub_domains::reg_suffix; use net_traits::storage_thread::{StorageThreadMsg, StorageType}; use offscreen_gl_context::{GLContextAttributes, GLLimits}; -use pipeline::{ChildProcess, InitialPipelineState, Pipeline}; +use pipeline::{InitialPipelineState, Pipeline}; use profile_traits::mem; use profile_traits::time; use rand::{Rng, SeedableRng, StdRng, random}; @@ -175,10 +175,6 @@ pub struct Constellation { scheduler_chan: IpcSender, - /// A list of child content processes. - #[cfg_attr(target_os = "windows", allow(dead_code))] - child_processes: Vec, - /// Document states for loaded pipelines (used only when writing screenshots). document_states: HashMap, @@ -558,7 +554,6 @@ impl Constellation phantom: PhantomData, webdriver: WebDriverData::new(), scheduler_chan: TimerScheduler::start(), - child_processes: Vec::new(), document_states: HashMap::new(), webrender_api_sender: state.webrender_api_sender, shutting_down: false, @@ -679,15 +674,11 @@ impl Constellation is_private: is_private, }); - let (pipeline, child_process) = match result { + let pipeline = match result { Ok(result) => result, Err(e) => return self.handle_send_error(pipeline_id, e), }; - if let Some(child_process) = child_process { - self.child_processes.push(child_process); - } - if let Some(host) = host { self.script_channels.entry(top_level_frame_id) .or_insert_with(HashMap::new) diff --git a/components/constellation/pipeline.rs b/components/constellation/pipeline.rs index 890476e5010a..81c7fead9557 100644 --- a/components/constellation/pipeline.rs +++ b/components/constellation/pipeline.rs @@ -134,15 +134,14 @@ pub struct InitialPipelineState { impl Pipeline { /// Starts a paint thread, layout thread, and possibly a script thread, in /// a new process if requested. - pub fn spawn(state: InitialPipelineState) - -> Result<(Pipeline, Option), IOError> + pub fn spawn(state: InitialPipelineState) -> Result where LTF: LayoutThreadFactory, STF: ScriptThreadFactory { // Note: we allow channel creation to panic, since recovering from this // probably requires a general low-memory strategy. let (pipeline_chan, pipeline_port) = ipc::channel() - .expect("Pipeline main chan");; + .expect("Pipeline main chan"); let (layout_content_process_shutdown_chan, layout_content_process_shutdown_port) = ipc::channel().expect("Pipeline layout content shutdown chan"); @@ -180,7 +179,6 @@ impl Pipeline { } }; - let mut child_process = None; if let Some((script_port, pipeline_port)) = content_ports { // Route messages coming from content to devtools as appropriate. let script_to_devtools_chan = state.devtools_chan.as_ref().map(|devtools_chan| { @@ -236,24 +234,22 @@ impl Pipeline { // // Yes, that's all there is to it! if opts::multiprocess() { - child_process = Some(try!(unprivileged_pipeline_content.spawn_multiprocess())); + let _ = try!(unprivileged_pipeline_content.spawn_multiprocess()); } else { unprivileged_pipeline_content.start_all::(false); } } - let pipeline = Pipeline::new(state.id, - state.frame_id, - state.parent_info, - script_chan, - pipeline_chan, - state.compositor_proxy, - state.is_private, - state.load_data.url, - state.window_size, - state.prev_visibility.unwrap_or(true)); - - Ok((pipeline, child_process)) + Ok(Pipeline::new(state.id, + state.frame_id, + state.parent_info, + script_chan, + pipeline_chan, + state.compositor_proxy, + state.is_private, + state.load_data.url, + state.window_size, + state.prev_visibility.unwrap_or(true))) } /// Creates a new `Pipeline`, after the script and layout threads have been