aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/main/constellation.rs36
-rw-r--r--src/components/script/script_task.rs30
2 files changed, 26 insertions, 40 deletions
diff --git a/src/components/main/constellation.rs b/src/components/main/constellation.rs
index 31b6a5224cf..555325b80c0 100644
--- a/src/components/main/constellation.rs
+++ b/src/components/main/constellation.rs
@@ -4,10 +4,9 @@
use compositing::{CompositorChan, SetIds, SetLayerClipRect};
-use std::cell::Cell;
use std::comm;
use std::comm::Port;
-use std::task;
+use std::task::spawn_with;
use geom::size::Size2D;
use geom::rect::Rect;
use gfx::opts::Opts;
@@ -258,32 +257,25 @@ impl Constellation {
profiler_chan: ProfilerChan)
-> ConstellationChan {
- let opts = Cell::new((*opts).clone());
-
let (constellation_port, constellation_chan) = special_stream!(ConstellationChan);
- let constellation_port = Cell::new(constellation_port);
-
- let compositor_chan = Cell::new(compositor_chan);
- let constellation_chan_clone = Cell::new(constellation_chan.clone());
-
- let resource_task = Cell::new(resource_task);
- let image_cache_task = Cell::new(image_cache_task);
- let profiler_chan = Cell::new(profiler_chan);
-
- do task::spawn {
+ do spawn_with((constellation_port, constellation_chan.clone(),
+ compositor_chan, resource_task, image_cache_task,
+ profiler_chan, opts.clone()))
+ |(constellation_port, constellation_chan, compositor_chan, resource_task,
+ image_cache_task, profiler_chan, opts)| {
let mut constellation = Constellation {
- chan: constellation_chan_clone.take(),
- request_port: constellation_port.take(),
- compositor_chan: compositor_chan.take(),
- resource_task: resource_task.take(),
- image_cache_task: image_cache_task.take(),
+ chan: constellation_chan,
+ request_port: constellation_port,
+ compositor_chan: compositor_chan,
+ resource_task: resource_task,
+ image_cache_task: image_cache_task,
pipelines: HashMap::new(),
navigation_context: NavigationContext::new(),
next_pipeline_id: PipelineId(0),
pending_frames: ~[],
pending_sizes: HashMap::new(),
- profiler_chan: profiler_chan.take(),
- opts: opts.take(),
+ profiler_chan: profiler_chan,
+ opts: opts
};
constellation.run();
}
@@ -730,9 +722,7 @@ impl Constellation {
None => {
// Add to_add to parent's children, if it is not the root
let parent = &to_add.parent;
- let to_add = Cell::new(to_add);
for parent in parent.iter() {
- let to_add = to_add.take();
let subpage_id = to_add.pipeline.subpage_id.expect("Constellation:
Child frame's subpage id is None. This should be impossible.");
let rect = self.pending_sizes.pop(&(parent.id, subpage_id));
diff --git a/src/components/script/script_task.rs b/src/components/script/script_task.rs
index 5ccdacad9be..55311b5cf2a 100644
--- a/src/components/script/script_task.rs
+++ b/src/components/script/script_task.rs
@@ -25,12 +25,11 @@ use servo_msg::constellation_msg::{PipelineId, SubpageId, RendererReadyMsg};
use servo_msg::constellation_msg::{LoadIframeUrlMsg, IFrameSandboxed, IFrameUnsandboxed};
use servo_msg::constellation_msg;
-use std::cell::Cell;
use std::comm;
use std::comm::{Port, SharedChan};
use std::io::read_whole_file;
use std::ptr;
-use std::task::{SingleThreaded, task};
+use std::task::spawn_with;
use std::util::replace;
use dom::window::TimerData;
use geom::size::Size2D;
@@ -435,22 +434,19 @@ impl ScriptTask {
resource_task: ResourceTask,
image_cache_task: ImageCacheTask,
initial_size: Future<Size2D<uint>>) {
- let compositor = Cell::new(compositor);
- let port = Cell::new(port);
- let initial_size = Cell::new(initial_size);
- // FIXME: rust#6399
- let mut the_task = task();
- the_task.sched_mode(SingleThreaded);
- do spawn {
+ do spawn_with((compositor, layout_chan, port, chan, constellation_chan,
+ resource_task, image_cache_task, initial_size))
+ |(compositor, layout_chan, port, chan, constellation_chan,
+ resource_task, image_cache_task, initial_size)| {
let script_task = ScriptTask::new(id,
- @compositor.take() as @ScriptListener,
- layout_chan.clone(),
- port.take(),
- chan.clone(),
- constellation_chan.clone(),
- resource_task.clone(),
- image_cache_task.clone(),
- initial_size.take());
+ @compositor as @ScriptListener,
+ layout_chan,
+ port,
+ chan,
+ constellation_chan,
+ resource_task,
+ image_cache_task,
+ initial_size);
script_task.start();
}
}