diff --git a/src/components/gfx/render_task.rs b/src/components/gfx/render_task.rs index 5f722446568..a828adeddb0 100644 --- a/src/components/gfx/render_task.rs +++ b/src/components/gfx/render_task.rs @@ -73,34 +73,23 @@ pub fn BufferRequest(screen_rect: Rect, page_rect: Rect) -> BufferReq } } -// FIXME(#2005, pcwalton): This should be a newtype struct. -pub struct RenderChan { - pub chan: Sender, -} - -impl Clone for RenderChan { - fn clone(&self) -> RenderChan { - RenderChan { - chan: self.chan.clone(), - } - } -} +#[deriving(Clone)] +pub struct RenderChan(Sender); impl RenderChan { pub fn new() -> (Receiver, RenderChan) { let (chan, port) = channel(); - let render_chan = RenderChan { - chan: chan, - }; - (port, render_chan) + (port, RenderChan(chan)) } pub fn send(&self, msg: Msg) { - assert!(self.send_opt(msg).is_ok(), "RenderChan.send: render port closed") + let &RenderChan(ref chan) = self; + assert!(chan.send_opt(msg).is_ok(), "RenderChan.send: render port closed") } pub fn send_opt(&self, msg: Msg) -> Result<(), Msg> { - self.chan.send_opt(msg) + let &RenderChan(ref chan) = self; + chan.send_opt(msg) } } diff --git a/src/components/main/constellation.rs b/src/components/main/constellation.rs index 1384ad0f285..ab3ac8043dc 100644 --- a/src/components/main/constellation.rs +++ b/src/components/main/constellation.rs @@ -397,7 +397,7 @@ impl Constellation { fn force_pipeline_exit(old_pipeline: &Rc) { let ScriptChan(ref old_script) = old_pipeline.script_chan; old_script.send_opt(ExitPipelineMsg(old_pipeline.id)); - old_pipeline.render_chan.chan.send_opt(render_task::ExitMsg(None)); + old_pipeline.render_chan.send_opt(render_task::ExitMsg(None)); let LayoutChan(ref old_layout) = old_pipeline.layout_chan; old_layout.send_opt(layout_interface::ExitNowMsg); } diff --git a/src/components/main/pipeline.rs b/src/components/main/pipeline.rs index 8578fa2f41a..e2a8f5fbdc2 100644 --- a/src/components/main/pipeline.rs +++ b/src/components/main/pipeline.rs @@ -197,12 +197,12 @@ impl Pipeline { } pub fn grant_paint_permission(&self) { - self.render_chan.chan.send_opt(PaintPermissionGranted); + self.render_chan.send_opt(PaintPermissionGranted); } pub fn revoke_paint_permission(&self) { debug!("pipeline revoking render channel paint permission"); - self.render_chan.chan.send_opt(PaintPermissionRevoked); + self.render_chan.send_opt(PaintPermissionRevoked); } pub fn exit(&self) {