From 6eff8d6c32d71eeb6a1f75765653a52d7a2b92d5 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 26 Nov 2015 09:51:55 +0100 Subject: [PATCH 1/3] Remove unused PrivilegedPipelineContent::constellation_chan. --- components/compositing/pipeline.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/components/compositing/pipeline.rs b/components/compositing/pipeline.rs index 14ca16c016f..52ab8c9d539 100644 --- a/components/compositing/pipeline.rs +++ b/components/compositing/pipeline.rs @@ -199,7 +199,7 @@ impl Pipeline { let unprivileged_pipeline_content = UnprivilegedPipelineContent { id: state.id, parent_info: state.parent_info, - constellation_chan: state.constellation_chan.clone(), + constellation_chan: state.constellation_chan, scheduler_chan: state.scheduler_chan, devtools_chan: script_to_devtools_chan, image_cache_task: state.image_cache_task, @@ -228,7 +228,6 @@ impl Pipeline { let privileged_pipeline_content = PrivilegedPipelineContent { id: state.id, - constellation_chan: state.constellation_chan, painter_chan: state.painter_chan, compositor_proxy: state.compositor_proxy, font_cache_task: state.font_cache_task, @@ -432,7 +431,6 @@ impl UnprivilegedPipelineContent { pub struct PrivilegedPipelineContent { id: PipelineId, - constellation_chan: ConstellationChan, painter_chan: ConstellationChan, compositor_proxy: Box, script_to_compositor_port: Option>, From 8dadd1a420f153b3407b384eb93193611a89314f Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 26 Nov 2015 10:17:18 +0100 Subject: [PATCH 2/3] Take PrivilegedPipelineContent::script_to_compositor_port out of its Option. --- components/compositing/pipeline.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/components/compositing/pipeline.rs b/components/compositing/pipeline.rs index 52ab8c9d539..bdb9b9def53 100644 --- a/components/compositing/pipeline.rs +++ b/components/compositing/pipeline.rs @@ -239,7 +239,7 @@ impl Pipeline { chrome_to_paint_chan: chrome_to_paint_chan, chrome_to_paint_port: Some(chrome_to_paint_port), paint_shutdown_chan: paint_shutdown_chan, - script_to_compositor_port: Some(script_to_compositor_port), + script_to_compositor_port: script_to_compositor_port, }; (pipeline, unprivileged_pipeline_content, privileged_pipeline_content) @@ -433,7 +433,7 @@ pub struct PrivilegedPipelineContent { id: PipelineId, painter_chan: ConstellationChan, compositor_proxy: Box, - script_to_compositor_port: Option>, + script_to_compositor_port: IpcReceiver, font_cache_task: FontCacheTask, time_profiler_chan: time::ProfilerChan, mem_profiler_chan: profile_mem::ProfilerChan, @@ -446,13 +446,12 @@ pub struct PrivilegedPipelineContent { } impl PrivilegedPipelineContent { - pub fn start_all(&mut self) { + pub fn start_all(mut self) { self.start_paint_task(); let compositor_proxy_for_script_listener_thread = self.compositor_proxy.clone_compositor_proxy(); - let script_to_compositor_port = - mem::replace(&mut self.script_to_compositor_port, None).unwrap(); + let script_to_compositor_port = self.script_to_compositor_port; thread::spawn(move || { compositor_task::run_script_listener_thread( compositor_proxy_for_script_listener_thread, From 9d73b869dbf69693bcb6ce860c42305dc123b61a Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 26 Nov 2015 10:23:11 +0100 Subject: [PATCH 3/3] Consume self in PrivilegedPipelineContent methods. This leads to a little bit of copy/paste, but the resulting code should be quite a bit more efficient. --- components/compositing/constellation.rs | 2 +- components/compositing/pipeline.rs | 49 +++++++++++++++---------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/components/compositing/constellation.rs b/components/compositing/constellation.rs index 002db169222..3abb1d5a54e 100644 --- a/components/compositing/constellation.rs +++ b/components/compositing/constellation.rs @@ -362,7 +362,7 @@ impl Constellation { script_channel: Option>, load_data: LoadData) { let spawning_paint_only = script_channel.is_some(); - let (pipeline, unprivileged_pipeline_content, mut privileged_pipeline_content) = + let (pipeline, unprivileged_pipeline_content, privileged_pipeline_content) = Pipeline::create::(InitialPipelineState { id: pipeline_id, parent_info: parent_info, diff --git a/components/compositing/pipeline.rs b/components/compositing/pipeline.rs index bdb9b9def53..c32e1f12cd0 100644 --- a/components/compositing/pipeline.rs +++ b/components/compositing/pipeline.rs @@ -235,9 +235,9 @@ impl Pipeline { mem_profiler_chan: state.mem_profiler_chan, load_data: state.load_data, failure: failure, - layout_to_paint_port: Some(layout_to_paint_port), + layout_to_paint_port: layout_to_paint_port, chrome_to_paint_chan: chrome_to_paint_chan, - chrome_to_paint_port: Some(chrome_to_paint_port), + chrome_to_paint_port: chrome_to_paint_port, paint_shutdown_chan: paint_shutdown_chan, script_to_compositor_port: script_to_compositor_port, }; @@ -384,7 +384,7 @@ impl UnprivilegedPipelineContent { ScriptTaskFactory::create(None::<&mut STF>, InitialScriptState { id: self.id, parent_info: self.parent_info, - compositor: self.script_to_compositor_chan.clone(), + compositor: self.script_to_compositor_chan, control_chan: self.script_chan.clone(), control_port: mem::replace(&mut self.script_port, None).unwrap(), constellation_chan: self.constellation_chan.clone(), @@ -439,15 +439,26 @@ pub struct PrivilegedPipelineContent { mem_profiler_chan: profile_mem::ProfilerChan, load_data: LoadData, failure: Failure, - layout_to_paint_port: Option>, + layout_to_paint_port: Receiver, chrome_to_paint_chan: Sender, - chrome_to_paint_port: Option>, + chrome_to_paint_port: Receiver, paint_shutdown_chan: IpcSender<()>, } impl PrivilegedPipelineContent { - pub fn start_all(mut self) { - self.start_paint_task(); + pub fn start_all(self) { + PaintTask::create(self.id, + self.load_data.url, + self.chrome_to_paint_chan, + self.layout_to_paint_port, + self.chrome_to_paint_port, + self.compositor_proxy.clone_compositor_proxy(), + self.painter_chan, + self.font_cache_task, + self.failure, + self.time_profiler_chan, + self.mem_profiler_chan, + self.paint_shutdown_chan); let compositor_proxy_for_script_listener_thread = self.compositor_proxy.clone_compositor_proxy(); @@ -459,19 +470,19 @@ impl PrivilegedPipelineContent { }); } - pub fn start_paint_task(&mut self) { + pub fn start_paint_task(self) { PaintTask::create(self.id, - self.load_data.url.clone(), - self.chrome_to_paint_chan.clone(), - mem::replace(&mut self.layout_to_paint_port, None).unwrap(), - mem::replace(&mut self.chrome_to_paint_port, None).unwrap(), - self.compositor_proxy.clone_compositor_proxy(), - self.painter_chan.clone(), - self.font_cache_task.clone(), - self.failure.clone(), - self.time_profiler_chan.clone(), - self.mem_profiler_chan.clone(), - self.paint_shutdown_chan.clone()); + self.load_data.url, + self.chrome_to_paint_chan, + self.layout_to_paint_port, + self.chrome_to_paint_port, + self.compositor_proxy, + self.painter_chan, + self.font_cache_task, + self.failure, + self.time_profiler_chan, + self.mem_profiler_chan, + self.paint_shutdown_chan); } }