Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor compositor #431

Merged
merged 7 commits into from May 9, 2013
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

@@ -168,21 +168,28 @@ DONE_servo_util = $(B)src/servo-util/libservoutil.dummy

DEPS_servo_util = $(CRATE_servo_util) $(SRC_servo_util) $(DONE_SUBMODULES)

RFLAGS_servo_gfx = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/servo-util
RFLAGS_servo_net = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/servo-util
SRC_servo_net = $(call rwildcard,$(S)src/servo-net/,*.rs)
CRATE_servo_net = $(S)src/servo-net/servo_net.rc
DONE_servo_net = $(B)src/servo-net/libservonet.dummy

DEPS_servo_net = $(CRATE_servo_net) $(SRC_servo_net) $(DONE_SUBMODULES) $(DONE_servo_util)

RFLAGS_servo_gfx = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/servo-util -L $(B)src/servo-net
SRC_servo_gfx = $(call rwildcard,$(S)src/servo-gfx/,*.rs)
CRATE_servo_gfx = $(S)src/servo-gfx/servo_gfx.rc
DONE_servo_gfx = $(B)src/servo-gfx/libservogfx.dummy

DEPS_servo_gfx = $(CRATE_servo_gfx) $(SRC_servo_gfx) $(DONE_SUBMODULES) $(DONE_servo_util)
DEPS_servo_gfx = $(CRATE_servo_gfx) $(SRC_servo_gfx) $(DONE_SUBMODULES) $(DONE_servo_util) $(DONE_servo_net)

RFLAGS_servo = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/servo-gfx -L $(B)src/servo-util
RFLAGS_servo = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/servo-gfx -L $(B)src/servo-util -L $(B)src/servo-net

WEBIDL_servo = $(call rwildcard,$(S)src/servo/,*.webidl)
AUTOGEN_SRC_servo = $(patsubst %.webidl, %Binding.rs, $(WEBIDL_servo))
SRC_servo = $(call rwildcard,$(S)src/servo/,*.rs) $(AUTOGEN_SRC_servo)
CRATE_servo = $(S)src/servo/servo.rc

DEPS_servo = $(CRATE_servo) $(SRC_servo) $(DONE_SUBMODULES) $(DONE_servo_util) $(DONE_servo_gfx)
DEPS_servo = $(CRATE_servo) $(SRC_servo) $(DONE_SUBMODULES) $(DONE_servo_util) $(DONE_servo_gfx) $(DONE_servo_net)

# rules that depend on having correct meta-target vars (DEPS_CLEAN, DEPS_servo, etc)
include $(S)mk/check.mk
@@ -197,6 +204,9 @@ all: servo package
$(DONE_servo_util): $(DEPS_servo_util)
$(RUSTC) $(RFLAGS_servo_util) -o $@ $< && touch $@

$(DONE_servo_net): $(DEPS_servo_net)
$(RUSTC) $(RFLAGS_servo_net) -o $@ $< && touch $@

$(DONE_servo_gfx): $(DEPS_servo_gfx)
$(RUSTC) $(RFLAGS_servo_gfx) -o $@ $< && touch $@

@@ -419,6 +419,7 @@ do
done

make_dir ${CFG_BUILD_DIR}src/servo-util
make_dir ${CFG_BUILD_DIR}src/servo-net
make_dir ${CFG_BUILD_DIR}src/servo-gfx
make_dir src/test/ref
make_dir src/rust
@@ -21,10 +21,8 @@ pub struct LayerBufferSet {
buffers: ~[LayerBuffer]
}

/**
The interface used to by the renderer to aquire draw targets for
each rendered frame and submit them to be drawn to the display
*/
/// The interface used to by the renderer to acquire draw targets for each rendered frame and
/// submit them to be drawn to the display.
pub trait Compositor {
fn begin_drawing(&self, next_dt: comm::Chan<LayerBufferSet>);
fn draw(&self, next_dt: comm::Chan<LayerBufferSet>, +draw_me: LayerBufferSet);
@@ -4,15 +4,15 @@

use color::{Color, rgb};
use geometry::Au;
use image::base::Image;
use render_context::RenderContext;
use text::SendableTextRun;
use servo_util::range::Range;

use clone_arc = std::arc::clone;
use geom::Rect;
use geom::Point2D;
use std::arc::ARC;
use servo_net::image::base::Image;
use servo_util::range::Range;

struct DisplayItemData {
bounds : Rect<Au>, // TODO: whose coordinate system should this use?

This file was deleted.

@@ -10,17 +10,11 @@ use azure::azure_hl::{CoreGraphicsAcceleratedBackend, Direct2DBackend, SkiaBacke

pub struct Opts {
urls: ~[~str],
render_mode: RenderMode,
render_backend: BackendType,
n_render_threads: uint,
tile_size: uint,
}

pub enum RenderMode {
Screen,
Png(~str)
}

#[allow(non_implicitly_copyable_typarams)]
pub fn from_cmdline_args(args: &[~str]) -> Opts {
use std::getopts;
@@ -45,11 +39,6 @@ pub fn from_cmdline_args(args: &[~str]) -> Opts {
copy opt_match.free
};

let render_mode = match getopts::opt_maybe_str(&opt_match, ~"o") {
Some(output_file) => Png(output_file),
None => Screen,
};

let render_backend = match getopts::opt_maybe_str(&opt_match, ~"r") {
Some(backend_str) => {
if backend_str == ~"direct2d" {
@@ -81,7 +70,6 @@ pub fn from_cmdline_args(args: &[~str]) -> Opts {

Opts {
urls: urls,
render_mode: render_mode,
render_backend: render_backend,
n_render_threads: n_render_threads,
tile_size: tile_size,
@@ -5,7 +5,6 @@
use compositor::LayerBuffer;
use font_context::FontContext;
use geometry::Au;
use image::base::Image;
use opts::Opts;

use azure::azure_hl::{B8G8R8A8, Color, ColorPattern, DrawOptions};
@@ -15,6 +14,7 @@ use core::libc::types::common::c99::uint16_t;
use geom::point::Point2D;
use geom::rect::Rect;
use geom::size::Size2D;
use servo_net::image::base::Image;
use std::arc;
use std::arc::ARC;

@@ -11,13 +11,13 @@ use geom::matrix2d::Matrix2D;
use opts::Opts;
use render_context::RenderContext;
use render_layers::{RenderLayer, render_layers};
use resource::util::spawn_listener;
use servo_util::time::time;

use core::cell::Cell;
use core::comm::{Port, SharedChan};
use core::task::SingleThreaded;
use std::task_pool::TaskPool;
use servo_net::util::spawn_listener;
use servo_util::time::time;

pub enum Msg {
RenderMsg(RenderLayer),
@@ -13,6 +13,7 @@ extern mod geom;
extern mod http_client;
extern mod stb_image;
extern mod std;
extern mod servo_net;
extern mod servo_util (name = "servo_util");

// Eventually we would like the shaper to be pluggable, as many operating systems have their own
@@ -57,22 +58,7 @@ pub mod opts;
#[path="platform/mod.rs"]
pub mod platform;

// Images
pub mod image {
pub mod base;
pub mod holder;
}

// Text
#[path = "text/mod.rs"]
pub mod text;

// FIXME: Blech. This does not belong in the GFX module.
pub mod resource {
pub mod file_loader;
pub mod http_loader;
pub mod image_cache_task;
pub mod local_image_cache;
pub mod resource_task;
pub mod util;
}
@@ -2,16 +2,17 @@
* 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 core::task::spawn;
use resource::resource_task::{Payload, Done, LoaderTask};
use core::io::{file_reader, ReaderUtil};
use resource_task::{Done, LoaderTask, Payload};

use core::io::{ReaderUtil, file_reader};
use core::task;

static READ_SIZE: uint = 1024;

pub fn factory() -> LoaderTask {
let f: LoaderTask = |url, progress_chan| {
assert!(url.scheme == ~"file");
do spawn {
assert!("file" == url.scheme);
do task::spawn {
// FIXME: Resolve bug prevents us from moving the path out of the URL.
match file_reader(&Path(url.path)) {
Ok(reader) => {
@@ -2,18 +2,19 @@
* 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 resource_task::{Payload, Done, LoaderTask};

use core::comm::SharedChan;
use core::task::spawn;
use resource::resource_task::{Payload, Done, LoaderTask};
use core::task;
use http_client::uv_http_request;
use http_client;
use http_client::{uv_http_request};

pub fn factory() -> LoaderTask {
let f: LoaderTask = |url, progress_chan| {
assert!(url.scheme == ~"http");

let progress_chan = SharedChan::new(progress_chan);
do spawn {
do task::spawn {
debug!("http_loader: requesting via http: %?", url.clone());
let mut request = uv_http_request(url.clone());
let errored = @mut false;
@@ -20,7 +20,6 @@ pub fn test_image_bin() -> ~[u8] {
}

pub fn load_from_memory(buffer: &[u8]) -> Option<Image> {

// Can't remember why we do this. Maybe it's what cairo wants
static FORCE_DEPTH: uint = 4;

@@ -3,21 +3,20 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

use image::base::Image;
use resource::image_cache_task::{ImageReady, ImageNotReady, ImageFailed};
use resource::local_image_cache::LocalImageCache;
use image_cache_task::{ImageReady, ImageNotReady, ImageFailed};
use local_image_cache::LocalImageCache;

use core::util::replace;
use geom::size::Size2D;
use std::net::url::Url;
use std::arc::{ARC, clone, get};

// FIXME: Nasty coupling to resource here. This should probably be factored out into an interface
// and use dependency injection.
// FIXME: Nasty coupling here This will be a problem if we want to factor out image handling from
// the network stack. This should probably be factored out into an interface and use dependency
// injection.

/** A struct to store image data. The image will be loaded once, the
first time it is requested, and an arc will be stored. Clones of
this arc are given out on demand.
*/
/// A struct to store image data. The image will be loaded once the first time it is requested,
/// and an ARC will be stored. Clones of this ARC are given out on demand.
pub struct ImageHolder {
url: Url,
image: Option<ARC<~Image>>,
@@ -46,18 +45,16 @@ pub impl ImageHolder {
holder
}

/**
This version doesn't perform any computation, but may be stale w.r.t.
newly-available image data that determines size.
The intent is that the impure version is used during layout when
dimensions are used for computing layout.
*/
/// This version doesn't perform any computation, but may be stale w.r.t. newly-available image
/// data that determines size.
///
/// The intent is that the impure version is used during layout when dimensions are used for
/// computing layout.
fn size(&self) -> Size2D<int> {
self.cached_size
}

/** Query and update current image size */
/// Query and update the current image size.
fn get_size(&mut self) -> Option<Size2D<int>> {
debug!("get_size() %?", self.url);
match self.get_image() {
@@ -103,3 +100,4 @@ pub impl ImageHolder {
return result;
}
}

File renamed without changes.
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.