From 513ff0259a145a72e1c550a43ef5b4557c0ad778 Mon Sep 17 00:00:00 2001 From: Tetsuharu OHZEKI Date: Tue, 17 Dec 2013 19:53:53 +0900 Subject: [PATCH 1/4] Remove the needless comment. --- src/components/main/compositing/run.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/main/compositing/run.rs b/src/components/main/compositing/run.rs index 880beb82aa6..7add72d2a0c 100644 --- a/src/components/main/compositing/run.rs +++ b/src/components/main/compositing/run.rs @@ -189,7 +189,6 @@ impl IOCompositor { } fn handle_message(&mut self) { - // Handle messages while self.port.peek() { match self.port.recv() { Exit => { From 56ba7fc3435e07136cb0e7cd44c677009be748c0 Mon Sep 17 00:00:00 2001 From: Tetsuharu OHZEKI Date: Tue, 17 Dec 2013 20:06:05 +0900 Subject: [PATCH 2/4] Introduce 'NullCompositor'. --- src/components/main/compositing/mod.rs | 3 +- .../main/compositing/run_headless.rs | 63 ++++++++++++------- 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/src/components/main/compositing/mod.rs b/src/components/main/compositing/mod.rs index d22258170c1..3ed53a47e40 100644 --- a/src/components/main/compositing/mod.rs +++ b/src/components/main/compositing/mod.rs @@ -197,7 +197,8 @@ impl CompositorTask { profiler_chan); } Headless => { - run_headless::run_compositor(&constellation_chan, port); + run_headless::NullCompositor::create(port, + constellation_chan.clone()); } } diff --git a/src/components/main/compositing/run_headless.rs b/src/components/main/compositing/run_headless.rs index 0d663aeb580..4ec179c7e05 100644 --- a/src/components/main/compositing/run_headless.rs +++ b/src/components/main/compositing/run_headless.rs @@ -8,34 +8,55 @@ use geom::size::Size2D; use servo_msg::constellation_msg::{ConstellationChan, ResizedWindowMsg}; use std::comm::Port; + /// Starts the compositor, which listens for messages on the specified port. /// /// This is the null compositor which doesn't draw anything to the screen. /// It's intended for headless testing. -pub fn run_compositor(constellation_chan: &ConstellationChan, port: Port) { - // Tell the constellation about the initial fake size. - constellation_chan.send(ResizedWindowMsg(Size2D(640u, 480u))); +pub struct NullCompositor { + /// The port on which we receive messages. + port: Port, +} - loop { - match port.recv() { - Exit => break, +impl NullCompositor { - GetGraphicsMetadata(chan) => { - chan.send(None); + fn new(port: Port) -> NullCompositor { + + NullCompositor { + port: port + } + } + + pub fn create(port: Port, constellation_chan: ConstellationChan) { + let compositor = NullCompositor::new(port); + + // Tell the constellation about the initial fake size. + constellation_chan.send(ResizedWindowMsg(Size2D(640u, 480u))); + compositor.handle_message(); + } + + fn handle_message(&self) { + loop { + match self.port.recv() { + Exit => break, + + GetGraphicsMetadata(chan) => { + chan.send(None); + } + + SetIds(_, response_chan, _) => { + response_chan.send(()); + } + + // Explicitly list ignored messages so that when we add a new one, + // we'll notice and think about whether it needs a response, like + // SetIds. + + NewLayer(*) | SetLayerPageSize(*) | SetLayerClipRect(*) | DeleteLayer(*) | + Paint(*) | InvalidateRect(*) | ChangeReadyState(*) | ChangeRenderState(*)| + ScrollFragmentPoint(*) | SetUnRenderedColor(*) + => () } - - SetIds(_, response_chan, _) => { - response_chan.send(()); - } - - // Explicitly list ignored messages so that when we add a new one, - // we'll notice and think about whether it needs a response, like - // SetIds. - - NewLayer(*) | SetLayerPageSize(*) | SetLayerClipRect(*) | DeleteLayer(*) | - Paint(*) | InvalidateRect(*) | ChangeReadyState(*) | ChangeRenderState(*)| - ScrollFragmentPoint(*) | SetUnRenderedColor(*) - => () } } } From 45b297bd0b46f53a415e01d21ba8e9a866a1c771 Mon Sep 17 00:00:00 2001 From: Tetsuharu OHZEKI Date: Tue, 17 Dec 2013 20:20:24 +0900 Subject: [PATCH 3/4] Rename main/compositing/mod.rs to main/compositing/compositor_task.rs. --- src/components/main/compositing/{mod.rs => compositor_task.rs} | 0 src/components/main/servo.rc | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename src/components/main/compositing/{mod.rs => compositor_task.rs} (100%) diff --git a/src/components/main/compositing/mod.rs b/src/components/main/compositing/compositor_task.rs similarity index 100% rename from src/components/main/compositing/mod.rs rename to src/components/main/compositing/compositor_task.rs diff --git a/src/components/main/servo.rc b/src/components/main/servo.rc index b5a177c91c1..e6584df38c7 100755 --- a/src/components/main/servo.rc +++ b/src/components/main/servo.rc @@ -58,7 +58,7 @@ use std::comm; use std::os; use std::task::spawn_with; -#[path="compositing/mod.rs"] +#[path="compositing/compositor_task.rs"] pub mod compositing; pub mod macros; From 369c5b8329414411200ab0d638e73f203a278dfc Mon Sep 17 00:00:00 2001 From: Tetsuharu OHZEKI Date: Tue, 17 Dec 2013 20:24:30 +0900 Subject: [PATCH 4/4] Rename compositor files. --- .../main/compositing/{run.rs => compositor.rs} | 0 .../main/compositing/compositor_task.rs | 18 +++++++++--------- .../{run_headless.rs => headless.rs} | 0 3 files changed, 9 insertions(+), 9 deletions(-) rename src/components/main/compositing/{run.rs => compositor.rs} (100%) rename src/components/main/compositing/{run_headless.rs => headless.rs} (100%) diff --git a/src/components/main/compositing/run.rs b/src/components/main/compositing/compositor.rs similarity index 100% rename from src/components/main/compositing/run.rs rename to src/components/main/compositing/compositor.rs diff --git a/src/components/main/compositing/compositor_task.rs b/src/components/main/compositing/compositor_task.rs index 3ed53a47e40..5cdf310ce59 100644 --- a/src/components/main/compositing/compositor_task.rs +++ b/src/components/main/compositing/compositor_task.rs @@ -28,8 +28,8 @@ use azure::azure_hl; mod quadtree; mod compositor_layer; -mod run; -mod run_headless; +mod compositor; +mod headless; /// The implementation of the layers-based compositor. #[deriving(Clone)] @@ -190,15 +190,15 @@ impl CompositorTask { match compositor.mode { Windowed(ref app) => { - run::IOCompositor::create(app, - opts, - port, - constellation_chan.clone(), - profiler_chan); + compositor::IOCompositor::create(app, + opts, + port, + constellation_chan.clone(), + profiler_chan); } Headless => { - run_headless::NullCompositor::create(port, - constellation_chan.clone()); + headless::NullCompositor::create(port, + constellation_chan.clone()); } } diff --git a/src/components/main/compositing/run_headless.rs b/src/components/main/compositing/headless.rs similarity index 100% rename from src/components/main/compositing/run_headless.rs rename to src/components/main/compositing/headless.rs