aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorey Farwell <coreyf@rwell.org>2016-12-09 11:00:24 -1000
committerCorey Farwell <coreyf@rwell.org>2016-12-09 11:00:24 -1000
commit8dfbfc2c48f5c896e538534368af964f08ecb67a (patch)
tree05653e888f5265bffd3ba8c3a2ee79e9ca8c9617
parent120b003195383041b9f182fc03103e50f9249e49 (diff)
downloadservo-8dfbfc2c48f5c896e538534368af964f08ecb67a.tar.gz
servo-8dfbfc2c48f5c896e538534368af964f08ecb67a.zip
Remove `Constellation::child_processes`.
Fixes https://github.com/servo/servo/issues/11459.
-rw-r--r--components/constellation/constellation.rs13
-rw-r--r--components/constellation/pipeline.rs30
2 files changed, 15 insertions, 28 deletions
diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs
index c34f9b1597c..2e6b5071d41 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<Message, LTF, STF> {
scheduler_chan: IpcSender<TimerEventRequest>,
- /// A list of child content processes.
- #[cfg_attr(target_os = "windows", allow(dead_code))]
- child_processes: Vec<ChildProcess>,
-
/// Document states for loaded pipelines (used only when writing screenshots).
document_states: HashMap<PipelineId, DocumentState>,
@@ -558,7 +554,6 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
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<Message, LTF, STF> Constellation<Message, LTF, STF>
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 890476e5010..81c7fead955 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<Message, LTF, STF>(state: InitialPipelineState)
- -> Result<(Pipeline, Option<ChildProcess>), IOError>
+ pub fn spawn<Message, LTF, STF>(state: InitialPipelineState) -> Result<Pipeline, IOError>
where LTF: LayoutThreadFactory<Message=Message>,
STF: ScriptThreadFactory<Message=Message>
{
// 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::<Message, LTF, STF>(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