From cc7493ea2f42ae0da476a96a9503e8066c666399 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Sat, 28 Jun 2014 09:00:43 -0400 Subject: [PATCH] Split compositing/pipeline/constellation code into separate crate. --- Makefile.in | 16 +++-- configure | 1 + src/components/compositing/compositing.rs | 64 +++++++++++++++++++ .../{main => }/compositing/compositor.rs | 9 ++- .../compositing/compositor_layer.rs | 2 +- .../{main => }/compositing/compositor_task.rs | 12 ++-- .../{main => compositing}/constellation.rs | 3 +- .../{main => }/compositing/headless.rs | 6 +- .../{main => compositing}/pipeline.rs | 2 +- .../platform/common/glfw_windowing.rs | 0 .../platform/common/glut_windowing.rs | 0 .../{main => compositing}/platform/mod.rs | 0 .../{main => }/compositing/quadtree.rs | 0 .../{main => compositing}/windowing.rs | 0 src/components/main/image.rs | 13 ---- src/components/main/servo.rs | 45 +------------ 16 files changed, 98 insertions(+), 75 deletions(-) create mode 100644 src/components/compositing/compositing.rs rename src/components/{main => }/compositing/compositor.rs (98%) rename src/components/{main => }/compositing/compositor_layer.rs (99%) rename src/components/{main => }/compositing/compositor_task.rs (97%) rename src/components/{main => compositing}/constellation.rs (99%) rename src/components/{main => }/compositing/headless.rs (89%) rename src/components/{main => compositing}/pipeline.rs (99%) rename src/components/{main => compositing}/platform/common/glfw_windowing.rs (100%) rename src/components/{main => compositing}/platform/common/glut_windowing.rs (100%) rename src/components/{main => compositing}/platform/mod.rs (100%) rename src/components/{main => }/compositing/quadtree.rs (100%) rename src/components/{main => compositing}/windowing.rs (100%) delete mode 100644 src/components/main/image.rs diff --git a/Makefile.in b/Makefile.in index b82aa4fa075..799ca67f15f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -282,14 +282,22 @@ DONE_layout = $(B)src/components/layout/liblayout.dummy DEPS_layout = $(CRATE_layout) $(SRC_layout) $(DONE_script) $(DONE_style) $(DONE_msg) $(DONE_macros) $(DONE_gfx) $(DONE_util) -RFLAGS_servo = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/gfx -L $(B)src/components/util -L $(B)src/components/net -L $(B)src/components/script -L $(B)src/components/layout -L $(B)src/components/style -L $(B)src/components/msg -L$(B)src/components/macros +RFLAGS_compositing = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/gfx -L $(B)src/components/util -L $(B)src/components/net -L $(B)src/components/script -L $(B)src/components/layout -L $(B)src/components/style -L $(B)src/components/msg + +SRC_compositing = $(call rwildcard,$(S)src/components/compositing/,*.rs) +CRATE_compositing = $(S)src/components/compositing/compositing.rs +DONE_compositing = $(B)src/components/compositing/libcompositing.dummy + +DEPS_compositing = $(CRATE_compositing) $(SRC_compositing) $(DONE_util) $(DONE_msg) $(DONE_gfx) + +RFLAGS_servo = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/gfx -L $(B)src/components/util -L $(B)src/components/net -L $(B)src/components/script -L $(B)src/components/layout -L $(B)src/components/compositing -L $(B)src/components/style -L $(B)src/components/msg -L$(B)src/components/macros SRC_servo = $(call rwildcard,$(S)src/components/main/,*.rs) CRATE_servo = $(S)src/components/main/servo.rs -DEPS_servo = $(CRATE_servo) $(SRC_servo) $(DONE_SUBMODULES) $(DONE_util) $(DONE_gfx) $(DONE_script) $(DONE_net) $(DONE_msg) $(DONE_style) $(DONE_macros) $(DONE_layout) +DEPS_servo = $(CRATE_servo) $(SRC_servo) $(DONE_SUBMODULES) $(DONE_util) $(DONE_gfx) $(DONE_script) $(DONE_net) $(DONE_msg) $(DONE_style) $(DONE_macros) $(DONE_layout) $(DONE_compositing) -SERVO_LIB_CRATES = macros util net msg gfx script style layout +SERVO_LIB_CRATES = macros util net msg gfx script style layout compositing # rules that depend on having correct meta-target vars (DEPS_CLEAN, DEPS_servo, etc) # and SERVO_LIB_CRATES @@ -356,7 +364,7 @@ servo: $(DEPS_servo) @$(call E, compile: $@) $(Q)$(RUSTC) $(RFLAGS_servo) $< --crate-type bin,dylib,rlib -RFLAGS_embedding = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/gfx -L $(B)src/components/util -L $(B)src/components/net -L $(B)src/components/script -L $(B)src/components/layout -L $(B)src/components/style -L $(B)src/components/msg -L $(B).. -L $(B)src/components/main -L $(B)src/components/macros -A non_camel_case_types -A unused_variable +RFLAGS_embedding = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/gfx -L $(B)src/components/util -L $(B)src/components/net -L $(B)src/components/script -L $(B)src/components/layout -L $(B)src/components/compositing -L $(B)src/components/style -L $(B)src/components/msg -L $(B).. -L $(B)src/components/main -L $(B)src/components/macros -A non_camel_case_types -A unused_variable ifeq ($(CFG_OSTYPE),apple-darwin) RFLAGS_embedding += -C link-args="-Wl,-U,_tc_new -Wl,-U,_tc_newarray -Wl,-U,_tc_delete -Wl,-U,_tc_deletearray" diff --git a/configure b/configure index d73359243b2..56af9f2de52 100755 --- a/configure +++ b/configure @@ -604,6 +604,7 @@ done make_dir ${CFG_BUILD_DIR}src/components/macros make_dir ${CFG_BUILD_DIR}src/components/util +make_dir ${CFG_BUILD_DIR}src/components/compositing make_dir ${CFG_BUILD_DIR}src/components/embedding make_dir ${CFG_BUILD_DIR}src/components/msg make_dir ${CFG_BUILD_DIR}src/components/net diff --git a/src/components/compositing/compositing.rs b/src/components/compositing/compositing.rs new file mode 100644 index 00000000000..b807559aa30 --- /dev/null +++ b/src/components/compositing/compositing.rs @@ -0,0 +1,64 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#![crate_id = "github.com/mozilla/servo#compositing:0.1"] +#![crate_type = "lib"] +#![crate_type = "dylib"] +#![crate_type = "rlib"] + +#![comment = "The Servo Parallel Browser Project"] +#![license = "MPL"] + +#![feature(globs, phase, macro_rules)] + +#[phase(plugin, link)] +extern crate log; + +extern crate debug; + +extern crate alert; +extern crate azure; +extern crate geom; +extern crate gfx; +#[cfg(not(target_os="android"))] +extern crate glfw; +#[cfg(target_os="android")] +extern crate glut; +extern crate layers; +extern crate layout; +extern crate opengles; +extern crate png; +extern crate script; +extern crate servo_msg = "msg"; +extern crate servo_net = "net"; +#[phase(plugin, link)] +extern crate servo_util = "util"; + +extern crate libc; +extern crate time; +extern crate url; + +#[cfg(target_os="macos")] +extern crate core_graphics; +#[cfg(target_os="macos")] +extern crate core_text; + +pub use compositor_task::{CompositorChan, CompositorTask}; +pub use constellation::Constellation; + +mod compositor_task; + +mod quadtree; +mod compositor_layer; + +mod compositor; +mod headless; + +mod pipeline; +mod constellation; + +mod windowing; + +#[path="platform/mod.rs"] +pub mod platform; diff --git a/src/components/main/compositing/compositor.rs b/src/components/compositing/compositor.rs similarity index 98% rename from src/components/main/compositing/compositor.rs rename to src/components/compositing/compositor.rs index 6272a688b5b..e1a9bbc0c76 100644 --- a/src/components/main/compositing/compositor.rs +++ b/src/components/compositing/compositor.rs @@ -2,11 +2,16 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +use compositor_task::{Msg, CompositorTask, Exit, ChangeReadyState, SetUnRenderedColor}; +use compositor_task::{SetIds, GetGraphicsMetadata, CreateRootCompositorLayerIfNecessary}; +use compositor_task::{CreateDescendantCompositorLayerIfNecessary, SetLayerPageSize}; +use compositor_task::{SetLayerClipRect, Paint, ScrollFragmentPoint, LoadComplete}; +use compositor_task::{ShutdownComplete, ChangeRenderState}; use constellation::SendableFrameTree; -use compositing::compositor_layer::CompositorLayer; -use compositing::*; +use compositor_layer::CompositorLayer; use pipeline::CompositionPipeline; use platform::{Application, Window}; +use windowing; use windowing::{FinishedWindowEvent, IdleWindowEvent, LoadUrlWindowEvent, MouseWindowClickEvent}; use windowing::{MouseWindowEvent, MouseWindowEventClass, MouseWindowMouseDownEvent}; use windowing::{MouseWindowMouseUpEvent, MouseWindowMoveEventClass, NavigationWindowEvent}; diff --git a/src/components/main/compositing/compositor_layer.rs b/src/components/compositing/compositor_layer.rs similarity index 99% rename from src/components/main/compositing/compositor_layer.rs rename to src/components/compositing/compositor_layer.rs index 268236efdce..eb3c56fd188 100644 --- a/src/components/main/compositing/compositor_layer.rs +++ b/src/components/compositing/compositor_layer.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use compositing::quadtree::{Quadtree, Normal, Hidden}; +use quadtree::{Quadtree, Normal, Hidden}; use pipeline::CompositionPipeline; use windowing::{MouseWindowEvent, MouseWindowClickEvent, MouseWindowMouseDownEvent}; use windowing::{MouseWindowMouseUpEvent}; diff --git a/src/components/main/compositing/compositor_task.rs b/src/components/compositing/compositor_task.rs similarity index 97% rename from src/components/main/compositing/compositor_task.rs rename to src/components/compositing/compositor_task.rs index 601ce2e7294..e4e1654f200 100644 --- a/src/components/main/compositing/compositor_task.rs +++ b/src/components/compositing/compositor_task.rs @@ -4,6 +4,8 @@ pub use windowing; +use compositor; +use headless; use constellation::SendableFrameTree; use windowing::{ApplicationMethods, WindowMethods}; use platform::Application; @@ -26,12 +28,6 @@ use url::Url; #[cfg(target_os="linux")] use azure::azure_hl; -mod quadtree; -mod compositor_layer; - -mod compositor; -mod headless; - /// The implementation of the layers-based compositor. #[deriving(Clone)] pub struct CompositorChan { @@ -214,11 +210,11 @@ impl CompositorTask { /// /// FIXME(pcwalton): Probably could be less platform-specific, using the metadata abstraction. #[cfg(target_os="linux")] - fn create_graphics_context() -> NativeCompositingGraphicsContext { + pub fn create_graphics_context() -> NativeCompositingGraphicsContext { NativeCompositingGraphicsContext::from_display(azure_hl::current_display()) } #[cfg(not(target_os="linux"))] - fn create_graphics_context() -> NativeCompositingGraphicsContext { + pub fn create_graphics_context() -> NativeCompositingGraphicsContext { NativeCompositingGraphicsContext::new() } diff --git a/src/components/main/constellation.rs b/src/components/compositing/constellation.rs similarity index 99% rename from src/components/main/constellation.rs rename to src/components/compositing/constellation.rs index c70bc948b5a..f5215be1555 100644 --- a/src/components/main/constellation.rs +++ b/src/components/compositing/constellation.rs @@ -2,8 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use compositing::{CompositorChan, LoadComplete, SetIds, SetLayerClipRect, ShutdownComplete}; - +use compositor_task::{CompositorChan, LoadComplete, ShutdownComplete, SetLayerClipRect, SetIds}; use std::collections::hashmap::{HashMap, HashSet}; use geom::rect::{Rect, TypedRect}; use geom::scale_factor::ScaleFactor; diff --git a/src/components/main/compositing/headless.rs b/src/components/compositing/headless.rs similarity index 89% rename from src/components/main/compositing/headless.rs rename to src/components/compositing/headless.rs index a19e3b55c2c..c588b57cfad 100644 --- a/src/components/main/compositing/headless.rs +++ b/src/components/compositing/headless.rs @@ -2,7 +2,11 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use compositing::*; +use compositor_task::{Msg, Exit, ChangeReadyState, SetUnRenderedColor}; +use compositor_task::{SetIds, GetGraphicsMetadata, CreateRootCompositorLayerIfNecessary}; +use compositor_task::{CreateDescendantCompositorLayerIfNecessary, SetLayerPageSize}; +use compositor_task::{SetLayerClipRect, Paint, ScrollFragmentPoint, LoadComplete}; +use compositor_task::{ShutdownComplete, ChangeRenderState}; use geom::scale_factor::ScaleFactor; use geom::size::TypedSize2D; diff --git a/src/components/main/pipeline.rs b/src/components/compositing/pipeline.rs similarity index 99% rename from src/components/main/pipeline.rs rename to src/components/compositing/pipeline.rs index 145abba9a8d..cabf2984b15 100644 --- a/src/components/main/pipeline.rs +++ b/src/components/compositing/pipeline.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use compositing::CompositorChan; +use CompositorChan; use layout::layout_task::LayoutTask; use gfx::render_task::{PaintPermissionGranted, PaintPermissionRevoked}; diff --git a/src/components/main/platform/common/glfw_windowing.rs b/src/components/compositing/platform/common/glfw_windowing.rs similarity index 100% rename from src/components/main/platform/common/glfw_windowing.rs rename to src/components/compositing/platform/common/glfw_windowing.rs diff --git a/src/components/main/platform/common/glut_windowing.rs b/src/components/compositing/platform/common/glut_windowing.rs similarity index 100% rename from src/components/main/platform/common/glut_windowing.rs rename to src/components/compositing/platform/common/glut_windowing.rs diff --git a/src/components/main/platform/mod.rs b/src/components/compositing/platform/mod.rs similarity index 100% rename from src/components/main/platform/mod.rs rename to src/components/compositing/platform/mod.rs diff --git a/src/components/main/compositing/quadtree.rs b/src/components/compositing/quadtree.rs similarity index 100% rename from src/components/main/compositing/quadtree.rs rename to src/components/compositing/quadtree.rs diff --git a/src/components/main/windowing.rs b/src/components/compositing/windowing.rs similarity index 100% rename from src/components/main/windowing.rs rename to src/components/compositing/windowing.rs diff --git a/src/components/main/image.rs b/src/components/main/image.rs deleted file mode 100644 index 99d07a0f4ee..00000000000 --- a/src/components/main/image.rs +++ /dev/null @@ -1,13 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* This file exists just to make it easier to import things inside of - ./images/ without specifying the file they came out of imports. - -Note that you still must define each of the files as a module in -servo.rc. This is not ideal and may be changed in the future. */ - -pub use holder::ImageHolder; -pub use base::Image; - diff --git a/src/components/main/servo.rs b/src/components/main/servo.rs index 96cd12224c8..49f68a2bf1b 100644 --- a/src/components/main/servo.rs +++ b/src/components/main/servo.rs @@ -13,50 +13,20 @@ extern crate log; extern crate debug; -extern crate alert; -extern crate azure; -extern crate geom; -extern crate gfx; -#[cfg(not(target_os="android"))] -extern crate glfw; -#[cfg(target_os="android")] -extern crate glut; -extern crate js; -extern crate layers; -extern crate layout; -extern crate opengles; -extern crate png; +extern crate compositing; extern crate rustuv; -extern crate script; -#[phase(plugin)] -extern crate servo_macros = "macros"; extern crate servo_net = "net"; extern crate servo_msg = "msg"; #[phase(plugin, link)] extern crate servo_util = "util"; -extern crate style; -extern crate sharegl; -extern crate stb_image; - -extern crate collections; extern crate green; extern crate libc; extern crate native; extern crate rustrt; -extern crate serialize; -extern crate sync; -extern crate time; extern crate url; -#[cfg(target_os="macos")] -extern crate core_graphics; -#[cfg(target_os="macos")] -extern crate core_text; - #[cfg(not(test))] -use compositing::{CompositorChan, CompositorTask}; -#[cfg(not(test))] -use constellation::Constellation; +use compositing::{CompositorChan, CompositorTask, Constellation}; #[cfg(not(test))] use servo_msg::constellation_msg::{ConstellationChan, InitLoadUrlMsg}; @@ -85,17 +55,6 @@ use rustrt::task::TaskOpts; use url::Url; -#[path="compositing/compositor_task.rs"] -pub mod compositing; - -pub mod constellation; -pub mod pipeline; - -pub mod windowing; - -#[path="platform/mod.rs"] -pub mod platform; - #[cfg(not(test), target_os="linux")] #[cfg(not(test), target_os="macos")] #[start]