mirror of
https://github.com/servo/servo.git
synced 2025-08-09 15:35:34 +01:00
gfx: Send a RenderLayer instead of a display list from layout to GFX.
This is a step on the way to window resizing.
This commit is contained in:
parent
5752ae6783
commit
0e9c278196
4 changed files with 16 additions and 12 deletions
|
@ -5,9 +5,9 @@ use js::jsapi::{JSContext, jsval, JSObject, JSBool, jsid, JSClass, JSFreeOp, JSP
|
|||
use js::jsapi::bindgen::{JS_ValueToString, JS_GetStringCharsZAndLength, JS_ReportError,
|
||||
JS_GetReservedSlot, JS_SetReservedSlot, JS_NewStringCopyN,
|
||||
JS_DefineFunctions, JS_DefineProperty, JS_GetContextPrivate};
|
||||
use js::jsval::{INT_TO_JSVAL, JSVAL_TO_PRIVATE};
|
||||
use js::jsapi::bindgen::*;
|
||||
use js::glue::bindgen::*;
|
||||
use js::jsval::{INT_TO_JSVAL, JSVAL_TO_PRIVATE};
|
||||
|
||||
use dom::node::{Node, NodeScope, Text, Doctype, Comment, Element};
|
||||
use utils::{rust_box, squirrel_away_unique, get_compartment, domstring_to_jsval, str};
|
||||
|
|
|
@ -29,6 +29,7 @@ use std::cell::Cell;
|
|||
use core::io::BytesWriter;
|
||||
use gfx::render_task::LayerBuffer;
|
||||
use geom::size::Size2D;
|
||||
use gfx::render_layers::RenderLayer;
|
||||
|
||||
pub type PngCompositor = Chan<Msg>;
|
||||
|
||||
|
@ -92,6 +93,7 @@ fn sanity_check() {
|
|||
let renderer = RenderTask(compositor);
|
||||
|
||||
let dlist : DisplayList = DVec();
|
||||
let render_layer = RenderLayer { display_list: move dlist, size: Size2D(800u, 600u) };
|
||||
renderer.send(RenderMsg(dlist));
|
||||
let (exit_chan, exit_response_from_engine) = pipes::stream();
|
||||
renderer.send(render_task::ExitMsg(exit_chan));
|
||||
|
|
|
@ -30,7 +30,7 @@ use text::font_cache::FontCache;
|
|||
pub type Renderer = comm::Chan<Msg>;
|
||||
|
||||
pub enum Msg {
|
||||
RenderMsg(dl::DisplayList),
|
||||
RenderMsg(RenderLayer),
|
||||
ExitMsg(pipes::Chan<()>)
|
||||
}
|
||||
|
||||
|
@ -60,7 +60,7 @@ pub fn RenderTask<C: Compositor Send>(compositor: C) -> RenderTask {
|
|||
|
||||
loop {
|
||||
match po.recv() {
|
||||
RenderMsg(move display_list) => {
|
||||
RenderMsg(move render_layer) => {
|
||||
#debug("renderer: got render request");
|
||||
let layer_buffer_cell = Cell(layer_buffer_port.recv());
|
||||
|
||||
|
@ -68,18 +68,13 @@ pub fn RenderTask<C: Compositor Send>(compositor: C) -> RenderTask {
|
|||
let layer_buffer_channel = Cell(move layer_buffer_channel);
|
||||
layer_buffer_port = new_layer_buffer_port;
|
||||
|
||||
let display_list = Cell(move display_list);
|
||||
let render_layer = Cell(move render_layer);
|
||||
|
||||
#debug("renderer: rendering");
|
||||
|
||||
do util::time::time(~"rendering") {
|
||||
let layer_buffer = layer_buffer_cell.take();
|
||||
let display_list = move display_list.take();
|
||||
|
||||
let render_layer = RenderLayer {
|
||||
display_list: move display_list,
|
||||
size: Size2D(800u, 600u)
|
||||
};
|
||||
let render_layer = move render_layer.take();
|
||||
|
||||
let layer_buffer =
|
||||
for render_layers::render_layers(&render_layer, move layer_buffer)
|
||||
|
|
|
@ -16,6 +16,7 @@ use geom::point::Point2D;
|
|||
use geom::rect::Rect;
|
||||
use geom::size::Size2D;
|
||||
use gfx::render_task;
|
||||
use gfx::render_layers::RenderLayer;
|
||||
use layout::box::RenderBox;
|
||||
use layout::box_builder::LayoutTreeBuilder;
|
||||
use layout::context::LayoutContext;
|
||||
|
@ -166,10 +167,16 @@ impl Layout {
|
|||
let builder = dl::DisplayListBuilder {
|
||||
ctx: &layout_ctx,
|
||||
};
|
||||
let render_layer = RenderLayer {
|
||||
display_list: move dlist,
|
||||
size: Size2D(800u, 600u)
|
||||
};
|
||||
|
||||
// TODO: set options on the builder before building
|
||||
// TODO: be smarter about what needs painting
|
||||
layout_root.build_display_list(&builder, © layout_root.d().position, &dlist);
|
||||
self.render_task.send(render_task::RenderMsg(dlist));
|
||||
layout_root.build_display_list(&builder, © layout_root.d().position,
|
||||
&render_layer.display_list);
|
||||
self.render_task.send(render_task::RenderMsg(move render_layer));
|
||||
} // time(layout)
|
||||
} // BuildMsg
|
||||
} // match
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue