From be1935e9ad499f053521cbb5e2721fdfacff84f5 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Sun, 23 Dec 2012 13:42:24 -0500 Subject: [PATCH] Update for language changes. --- Makefile.in | 2 +- README.md | 2 +- src/rust-azure | 2 +- src/rust-cairo | 2 +- src/rust-css | 2 +- src/rust-geom | 2 +- src/rust-http-client | 2 +- src/rust-mozjs | 2 +- src/rust-netsurfcss | 2 +- src/servo-gfx/font.rs | 6 +-- src/servo-gfx/font_context.rs | 10 ++--- .../{freetype => freetype_impl}/font.rs | 6 +-- .../font_context.rs | 6 +-- src/servo-gfx/geometry.rs | 6 +-- src/servo-gfx/opts.rs | 4 +- src/servo-gfx/render_task.rs | 9 +++-- src/servo-gfx/resource/file_loader.rs | 2 +- src/servo-gfx/resource/http_loader.rs | 2 +- src/servo-gfx/resource/image_cache_task.rs | 11 +++--- src/servo-gfx/resource/resource_task.rs | 4 +- src/servo-gfx/resource/util.rs | 12 ++++++ src/servo-gfx/servo_gfx.rc | 22 +---------- src/servo-gfx/text/glyph.rs | 4 +- src/servo-gfx/text/mod.rs | 1 - src/servo-gfx/util/cache.rs | 2 +- src/servo/content/content_task.rs | 13 ++++--- src/servo/dom/window.rs | 7 ++-- src/servo/engine.rs | 6 +-- src/servo/html/cssparse.rs | 8 ++-- src/servo/html/hubbub_html_parser.rs | 31 +++++++-------- src/servo/layout/layout_task.rs | 13 ++++--- src/servo/platform/osmain.rs | 18 ++++++--- src/servo/servo.rc | 38 +------------------ src/servo/util/actor.rs | 1 + src/servo/util/mod.rs | 1 + src/servo/util/task.rs | 25 ++++++++++++ 36 files changed, 142 insertions(+), 144 deletions(-) rename src/servo-gfx/{freetype => freetype_impl}/font.rs (98%) rename src/servo-gfx/{freetype => freetype_impl}/font_context.rs (88%) create mode 100644 src/servo-gfx/resource/util.rs create mode 100644 src/servo/util/task.rs diff --git a/Makefile.in b/Makefile.in index f2c4be30684..1540abf8e3f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -29,7 +29,7 @@ B := $(CFG_BUILD_DIR) MKFILE_DEPS := config.stamp $(call rwildcard,$(S)mk/,*) -CFG_RUSTC_FLAGS := $(RUSTFLAGS) +CFG_RUSTC_FLAGS := $(RUSTFLAGS) -A default_methods ifdef CFG_DISABLE_OPTIMIZE $(info cfg: disabling rustc optimization (CFG_DISABLE_OPTIMIZE)) diff --git a/README.md b/README.md index d3888532607..c4f9fa72db0 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ against a released version of Rust will not work, nor will the Rust 'master' branch. The commit below will *probably* work. If it does not then the topic in #servo might know better. -* Last known-good Rust commit: 54ae377ec26ed47bbb627bdcb58bb10658cf03c4 +* Last known-good Rust commit: 3ee1d3ebb81de199fc630a86933ac18c0a869482 [rust]: http://www.rust-lang.org diff --git a/src/rust-azure b/src/rust-azure index 37389b82bd5..cbe1210a6e6 160000 --- a/src/rust-azure +++ b/src/rust-azure @@ -1 +1 @@ -Subproject commit 37389b82bd5608b05b66edce7a4cce92c7edb3c6 +Subproject commit cbe1210a6e62df8775f9b56a2ee589384600466a diff --git a/src/rust-cairo b/src/rust-cairo index 4fa6613be80..fda83465dfb 160000 --- a/src/rust-cairo +++ b/src/rust-cairo @@ -1 +1 @@ -Subproject commit 4fa6613be800afb715b1be304274e074426475b4 +Subproject commit fda83465dfb30e4724eac1f560e0e4b2d82a6783 diff --git a/src/rust-css b/src/rust-css index 105bc09e7d5..7d37d899a0f 160000 --- a/src/rust-css +++ b/src/rust-css @@ -1 +1 @@ -Subproject commit 105bc09e7d5988a5d8601d69efc5a22b73d634a4 +Subproject commit 7d37d899a0fb038069a796ed4c866e6ec76cc268 diff --git a/src/rust-geom b/src/rust-geom index fda5dc9644e..e0e4dab1cae 160000 --- a/src/rust-geom +++ b/src/rust-geom @@ -1 +1 @@ -Subproject commit fda5dc9644e1eba2dbf4d1023ee3b6c6eda43b62 +Subproject commit e0e4dab1caea0bbfa8a4e9b22b7ae04762d1d5f2 diff --git a/src/rust-http-client b/src/rust-http-client index b195738006d..cbb84866b91 160000 --- a/src/rust-http-client +++ b/src/rust-http-client @@ -1 +1 @@ -Subproject commit b195738006d4b2c147ad10601cd2436f04888574 +Subproject commit cbb84866b91aaff3fcd1dc774f61f76c4a7c3b0b diff --git a/src/rust-mozjs b/src/rust-mozjs index fb5f5a5660f..04e000311bf 160000 --- a/src/rust-mozjs +++ b/src/rust-mozjs @@ -1 +1 @@ -Subproject commit fb5f5a5660f4b3af536b5dc314f7ebd059c0e291 +Subproject commit 04e000311bf499dc12e71c686b7b3cd02fc84515 diff --git a/src/rust-netsurfcss b/src/rust-netsurfcss index 915654c6077..261693b63e8 160000 --- a/src/rust-netsurfcss +++ b/src/rust-netsurfcss @@ -1 +1 @@ -Subproject commit 915654c60779a41ff7e419153a2f3d00a2d37416 +Subproject commit 261693b63e8922a95204db3681209138627362c4 diff --git a/src/servo-gfx/font.rs b/src/servo-gfx/font.rs index 25164c0c421..d16a8558a9d 100644 --- a/src/servo-gfx/font.rs +++ b/src/servo-gfx/font.rs @@ -21,7 +21,7 @@ use geom::{Point2D, Rect, Size2D}; pub type FontHandle/& = quartz::font::QuartzFontHandle; #[cfg(target_os = "linux")] -pub type FontHandle/& = freetype::font::FreeTypeFontHandle; +pub type FontHandle/& = freetype_impl::font::FreeTypeFontHandle; pub trait FontHandleMethods { // an identifier usable by FontContextHandle to recreate this FontHandle. @@ -51,7 +51,7 @@ pub impl FontHandle { #[cfg(target_os = "linux")] static pub fn new_from_buffer(fctx: &native::FontContextHandle, buf: ~[u8], style: &SpecifiedFontStyle) -> Result { - freetype::font::FreeTypeFontHandle::new_from_buffer(fctx, move buf, style) + freetype_impl::font::FreeTypeFontHandle::new_from_buffer(fctx, move buf, style) } } @@ -78,7 +78,7 @@ impl FontTableTag : FontTableTagConversions { pub type FontTable/& = quartz::font::QuartzFontTable; #[cfg(target_os = "linux")] -pub type FontTable/& = freetype::font::FreeTypeFontTable; +pub type FontTable/& = freetype_impl::font::FreeTypeFontTable; pub trait FontTableMethods { fn with_buffer(fn&(*u8, uint)); diff --git a/src/servo-gfx/font_context.rs b/src/servo-gfx/font_context.rs index 49d0b2b2d55..d70071015f4 100644 --- a/src/servo-gfx/font_context.rs +++ b/src/servo-gfx/font_context.rs @@ -2,7 +2,7 @@ use font::{Font, FontDescriptor, FontGroup, FontStyle, SelectorPlatformIdentifie use font::{SelectorStubDummy, SpecifiedFontStyle, UsedFontStyle}; use font_list::FontList; use native::FontHandle; -use util::cache; +use util::cache::Cache; use util::cache::MonoCache; use azure::azure_hl::BackendType; @@ -34,7 +34,7 @@ pub fn dummy_style() -> FontStyle { type FontContextHandle/& = quartz::font_context::QuartzFontContextHandle; #[cfg(target_os = "linux")] -type FontContextHandle/& = freetype::font_context::FreeTypeFontContextHandle; +type FontContextHandle/& = freetype_impl::font_context::FreeTypeFontContextHandle; pub trait FontContextHandleMethods { pure fn clone(&const self) -> FontContextHandle; @@ -51,12 +51,12 @@ pub impl FontContextHandle { #[cfg(target_os = "linux")] static pub fn new() -> FontContextHandle { - freetype::font_context::FreeTypeFontContextHandle::new() + freetype_impl::font_context::FreeTypeFontContextHandle::new() } } pub struct FontContext { - instance_cache: cache::MonoCache, + instance_cache: MonoCache, font_list: Option, // only needed by layout handle: FontContextHandle, backend: BackendType, @@ -78,7 +78,7 @@ pub impl FontContext { FontContext { // TODO(Rust #3902): remove extraneous type parameters once they are inferred correctly. - instance_cache: cache::new::>(10), + instance_cache: Cache::new::>(10), font_list: move font_list, handle: move handle, backend: backend, diff --git a/src/servo-gfx/freetype/font.rs b/src/servo-gfx/freetype_impl/font.rs similarity index 98% rename from src/servo-gfx/freetype/font.rs rename to src/servo-gfx/freetype_impl/font.rs index 7f44192a48e..2056c6c0400 100644 --- a/src/servo-gfx/freetype/font.rs +++ b/src/servo-gfx/freetype_impl/font.rs @@ -1,6 +1,6 @@ extern mod freetype; -use font_context::FreeTypeFontContextHandle; +use freetype_impl::font_context::FreeTypeFontContextHandle; use gfx_font::{ CSSFontWeight, FontHandle, @@ -17,7 +17,7 @@ use geometry::Au; use text::glyph::GlyphIndex; use text::util::{float_to_fixed, fixed_to_float}; -use freetype::freetype::{ +use self::freetype::freetype::{ FTErrorMethods, FT_Error, FT_F26Dot6, @@ -32,7 +32,7 @@ use freetype::freetype::{ FT_UInt, FT_Size_Metrics, }; -use freetype::freetype::bindgen::{ +use self::freetype::freetype::bindgen::{ FT_Init_FreeType, FT_Done_FreeType, FT_New_Memory_Face, diff --git a/src/servo-gfx/freetype/font_context.rs b/src/servo-gfx/freetype_impl/font_context.rs similarity index 88% rename from src/servo-gfx/freetype/font_context.rs rename to src/servo-gfx/freetype_impl/font_context.rs index a190dff57be..39618abfb5e 100644 --- a/src/servo-gfx/freetype/font_context.rs +++ b/src/servo-gfx/freetype_impl/font_context.rs @@ -1,11 +1,11 @@ extern mod freetype; -use freetype::freetype::{ +use self::freetype::freetype::{ FTErrorMethods, FT_Error, FT_Library, }; -use freetype::freetype::bindgen::{ +use self::freetype::freetype::bindgen::{ FT_Init_FreeType, FT_Done_FreeType }; @@ -14,7 +14,7 @@ use gfx_font::{ FontHandle, UsedFontStyle, }; -use gfx_font_context::FontContextHandleMethods; +use font_context::FontContextHandleMethods; pub struct FreeTypeFontContextHandle { ctx: FT_Library, diff --git a/src/servo-gfx/geometry.rs b/src/servo-gfx/geometry.rs index d30456d938c..b2a285d8cec 100644 --- a/src/servo-gfx/geometry.rs +++ b/src/servo-gfx/geometry.rs @@ -1,7 +1,7 @@ use geom::point::Point2D; use geom::rect::Rect; use geom::size::Size2D; -use num::{Num, from_int}; +use num::Num; pub enum Au = i32; @@ -45,7 +45,7 @@ impl Au { } static pub pure fn from_px(i: int) -> Au { - from_int(i * 60) + Num::from_int(i * 60) } pub pure fn to_px(&const self) -> int { @@ -98,7 +98,7 @@ pub pure fn from_frac_px(f: float) -> Au { } pub pure fn from_px(i: int) -> Au { - from_int(i * 60) + Num::from_int(i * 60) } pub pure fn to_px(au: Au) -> int { diff --git a/src/servo-gfx/opts.rs b/src/servo-gfx/opts.rs index 6af78da8061..7adccb59e1d 100644 --- a/src/servo-gfx/opts.rs +++ b/src/servo-gfx/opts.rs @@ -66,12 +66,12 @@ pub fn from_cmdline_args(args: &[~str]) -> Opts { }; let tile_size: uint = match getopts::opt_maybe_str(&opt_match, ~"s") { - Some(move tile_size_str) => from_str::from_str(tile_size_str).get(), + Some(move tile_size_str) => uint::from_str(tile_size_str).get(), None => 512, }; let n_render_threads: uint = match getopts::opt_maybe_str(&opt_match, ~"t") { - Some(move n_render_threads_str) => from_str::from_str(n_render_threads_str).get(), + Some(move n_render_threads_str) => uint::from_str(n_render_threads_str).get(), None => 1, // FIXME: Number of cores. }; diff --git a/src/servo-gfx/render_task.rs b/src/servo-gfx/render_task.rs index d027558f9f5..23f651721e3 100644 --- a/src/servo-gfx/render_task.rs +++ b/src/servo-gfx/render_task.rs @@ -3,9 +3,10 @@ use font_context::FontContext; use opts::Opts; use render_context::RenderContext; use render_layers::{RenderLayer, render_layers}; +use resource::util::spawn_listener; use azure::AzFloat; -use core::comm::*; +use core::oldcomm::*; use core::libc::size_t; use core::libc::types::common::c99::uint16_t; use core::pipes::{Port, Chan}; @@ -21,12 +22,12 @@ pub enum Msg { ExitMsg(pipes::Chan<()>) } -pub type RenderTask = comm::Chan; +pub type RenderTask = oldcomm::Chan; pub fn RenderTask(compositor: C, opts: Opts) -> RenderTask { let compositor_cell = Cell(move compositor); let opts_cell = Cell(move opts); - do task::spawn_listener |po: comm::Port, move compositor_cell, move opts_cell| { + do spawn_listener |po: oldcomm::Port, move compositor_cell, move opts_cell| { let (layer_buffer_set_port, layer_buffer_channel) = pipes::stream(); let compositor = compositor_cell.take(); @@ -68,7 +69,7 @@ priv struct ThreadRenderContext { } priv struct Renderer { - port: comm::Port, + port: oldcomm::Port, compositor: C, layer_buffer_set_port: Cell>, thread_pool: TaskPool, diff --git a/src/servo-gfx/resource/file_loader.rs b/src/servo-gfx/resource/file_loader.rs index f12a5dc1110..73ef8557afb 100644 --- a/src/servo-gfx/resource/file_loader.rs +++ b/src/servo-gfx/resource/file_loader.rs @@ -1,6 +1,6 @@ export factory; -use comm::Chan; +use oldcomm::Chan; use task::spawn; use resource::resource_task::{ProgressMsg, Payload, Done}; use std::net::url::Url; diff --git a/src/servo-gfx/resource/http_loader.rs b/src/servo-gfx/resource/http_loader.rs index 8bf08bde718..feb8c62ee9b 100644 --- a/src/servo-gfx/resource/http_loader.rs +++ b/src/servo-gfx/resource/http_loader.rs @@ -1,6 +1,6 @@ export factory; -use comm::Chan; +use oldcomm::Chan; use task::spawn; use resource::resource_task::{ProgressMsg, Payload, Done}; use std::net::url::Url; diff --git a/src/servo-gfx/resource/image_cache_task.rs b/src/servo-gfx/resource/image_cache_task.rs index 7de5074240e..aa42c9e9c0c 100644 --- a/src/servo-gfx/resource/image_cache_task.rs +++ b/src/servo-gfx/resource/image_cache_task.rs @@ -5,7 +5,8 @@ use util::url::{make_url, UrlMap, url_map}; use clone_arc = std::arc::clone; use core::pipes::{Chan, Port, SharedChan, stream}; -use core::task::{spawn, spawn_listener}; +use core::task::spawn; +use resource::util::spawn_listener; use core::to_str::ToStr; use core::util::replace; use std::arc::ARC; @@ -464,7 +465,7 @@ impl ImageCacheTask: ImageCacheTaskClient { } fn load_image_data(url: Url, resource_task: ResourceTask) -> Result<~[u8], ()> { - let response_port = comm::Port(); + let response_port = oldcomm::Port(); resource_task.send(resource_task::Load(move url, response_port.chan())); let mut image_data = ~[]; @@ -489,8 +490,8 @@ fn default_decoder_factory() -> ~fn(&[u8]) -> Option { } #[cfg(test)] -fn mock_resource_task(on_load: ~fn(resource: comm::Chan)) -> ResourceTask { - do spawn_listener |port: comm::Port, move on_load| { +fn mock_resource_task(on_load: ~fn(resource: oldcomm::Chan)) -> ResourceTask { + do spawn_listener |port: oldcomm::Port, move on_load| { loop { match port.recv() { resource_task::Load(_, response) => { @@ -530,7 +531,7 @@ fn should_fail_if_unprefetched_image_is_requested() { #[test] fn should_request_url_from_resource_task_on_prefetch() { - let url_requested = comm::Port(); + let url_requested = oldcomm::Port(); let url_requested_chan = url_requested.chan(); let mock_resource_task = do mock_resource_task |response| { diff --git a/src/servo-gfx/resource/resource_task.rs b/src/servo-gfx/resource/resource_task.rs index 444c52f95b2..a181c2ec547 100644 --- a/src/servo-gfx/resource/resource_task.rs +++ b/src/servo-gfx/resource/resource_task.rs @@ -4,8 +4,8 @@ A task that takes a URL and streams back the binary data */ -use comm::{Chan, Port}; -use task::{spawn, spawn_listener}; +use oldcomm::{Chan, Port}; +use resource::util::spawn_listener; use std::net::url; use std::net::url::{Url, to_str}; diff --git a/src/servo-gfx/resource/util.rs b/src/servo-gfx/resource/util.rs new file mode 100644 index 00000000000..3efd5b03dd6 --- /dev/null +++ b/src/servo-gfx/resource/util.rs @@ -0,0 +1,12 @@ +pub fn spawn_listener( + +f: fn~(oldcomm::Port)) -> oldcomm::Chan { + let setup_po = oldcomm::Port(); + let setup_ch = oldcomm::Chan(&setup_po); + do task::spawn |move f| { + let po = oldcomm::Port(); + let ch = oldcomm::Chan(&po); + oldcomm::send(setup_ch, ch); + f(move po); + } + oldcomm::recv(setup_po) +} diff --git a/src/servo-gfx/servo_gfx.rc b/src/servo-gfx/servo_gfx.rc index 9c2d670ec65..56ba02a12f7 100644 --- a/src/servo-gfx/servo_gfx.rc +++ b/src/servo-gfx/servo_gfx.rc @@ -36,37 +36,28 @@ pub mod native; #[cfg(target_os = "macos")] pub mod quartz { - #[path = "quartz/font.rs"] pub mod font; - #[path = "quartz/font_context.rs"] pub mod font_context; - #[path = "quartz/font_list.rs"] pub mod font_list; } #[cfg(target_os = "linux")] -pub mod freetype { - #[path = "freetype/font.rs"] +pub mod freetype_impl { pub mod font; - #[path = "freetype/font_context.rs"] pub mod font_context; } #[cfg(target_os = "linux")] pub mod fontconfig { - #[path = "fontconfig/font_list.rs"] pub mod font_list; } // Images pub mod image { - #[path = "image/base.rs"] pub mod base; pub mod encode { - #[path = "image/encode/tga.rs"] pub mod tga; } - #[path = "image/holder.rs"] pub mod holder; } @@ -76,28 +67,19 @@ pub mod text; // FIXME: Blech. This does not belong in the GFX module. pub mod resource { - #[path = "resource/file_loader.rs"] pub mod file_loader; - #[path = "resource/http_loader.rs"] pub mod http_loader; - #[path = "resource/image_cache_task.rs"] pub mod image_cache_task; - #[path = "resource/local_image_cache.rs"] pub mod local_image_cache; - #[path = "resource/resource_task.rs"] pub mod resource_task; + pub mod util; } pub mod util { - #[path = "util/cache.rs"] pub mod cache; - #[path = "util/range.rs"] pub mod range; - #[path = "util/time.rs"] pub mod time; - #[path = "util/url.rs"] pub mod url; - #[path = "util/vec.rs"] pub mod vec; } diff --git a/src/servo-gfx/text/glyph.rs b/src/servo-gfx/text/glyph.rs index ca355f195b8..35a566f1e37 100644 --- a/src/servo-gfx/text/glyph.rs +++ b/src/servo-gfx/text/glyph.rs @@ -4,10 +4,10 @@ use servo_gfx_util::vec::*; use core::cmp::{Ord, Eq}; use core::dvec::DVec; -use core::num::from_int; use core::u16; use geom::point::Point2D; use std::sort; +use num::Num; // GlyphEntry is a port of Gecko's CompressedGlyph scheme for storing @@ -172,7 +172,7 @@ impl GlyphEntry { #[inline(always)] pure fn advance() -> Au { //assert self.is_simple(); - from_int(((self.value & GLYPH_ADVANCE_MASK) >> GLYPH_ADVANCE_SHIFT) as int) + Num::from_int(((self.value & GLYPH_ADVANCE_MASK) >> GLYPH_ADVANCE_SHIFT) as int) } pure fn index() -> GlyphIndex { diff --git a/src/servo-gfx/text/mod.rs b/src/servo-gfx/text/mod.rs index 108f7440db7..992dc50283e 100644 --- a/src/servo-gfx/text/mod.rs +++ b/src/servo-gfx/text/mod.rs @@ -15,6 +15,5 @@ pub mod shaper; // Below are the actual platform-specific parts. pub mod harfbuzz { - #[path = "harfbuzz/shaper.rs"] pub mod shaper; } diff --git a/src/servo-gfx/util/cache.rs b/src/servo-gfx/util/cache.rs index ef2825042db..4da1fd30f0e 100644 --- a/src/servo-gfx/util/cache.rs +++ b/src/servo-gfx/util/cache.rs @@ -1,6 +1,6 @@ use core::cmp::*; -trait Cache { +pub trait Cache { static fn new(size: uint) -> self; fn insert(key: &K, value: V); fn find(key: &K) -> Option; diff --git a/src/servo/content/content_task.rs b/src/servo/content/content_task.rs index 7189598eb88..0ad1ce7c634 100644 --- a/src/servo/content/content_task.rs +++ b/src/servo/content/content_task.rs @@ -11,10 +11,11 @@ use dom::window::Window; use layout::layout_task; use layout::layout_task::{AddStylesheet, BuildData, BuildMsg, Damage, LayoutTask}; use layout::layout_task::{MatchSelectorsDamage, NoDamage, ReflowDamage}; +use util::task::spawn_listener; -use core::comm::{Port, Chan, listen, select2}; +use core::oldcomm::{Port, Chan, listen, select2}; use core::either; -use core::task::{SingleThreaded, spawn, spawn_listener, task}; +use core::task::{SingleThreaded, spawn, task}; use core::io::{println, read_whole_file}; use core::ptr::null; use core::util::replace; @@ -234,7 +235,7 @@ impl Content { //TODO: support extra args. requires passing a *JSVal argv JS_CallFunctionValue(self.cx.ptr, thisValue, timerData.funval, 0, null(), ptr::to_unsafe_ptr(&rval)); - self.relayout(self.document.get(), &self.doc_url.get()); + self.relayout(self.document.get(), &(copy self.doc_url).get()); return true; } @@ -325,7 +326,7 @@ impl Content { } fn query_layout(query: layout_task::LayoutQuery) -> layout_task::LayoutQueryResponse { - self.relayout(self.document.get(), &self.doc_url.get()); + self.relayout(self.document.get(), &(copy self.doc_url).get()); self.join_layout(); let response_port = Port(); @@ -349,7 +350,7 @@ impl Content { } Some(document) => { assert self.doc_url.is_some(); - self.relayout(document, &self.doc_url.get()); + self.relayout(document, &(copy self.doc_url).get()); } } response_chan.send(()); @@ -364,7 +365,7 @@ impl Content { } Some(document) => { assert self.doc_url.is_some(); - self.relayout(document, &self.doc_url.get()); + self.relayout(document, &(copy self.doc_url).get()); } } return true; diff --git a/src/servo/dom/window.rs b/src/servo/dom/window.rs index 866ca622f7a..fb2bac24f2d 100644 --- a/src/servo/dom/window.rs +++ b/src/servo/dom/window.rs @@ -1,7 +1,8 @@ -use comm::{Port, Chan}; +use oldcomm::{Port, Chan}; use content::content_task::{ControlMsg, Timer, ExitMsg}; use js::jsapi::JSVal; use dvec::DVec; +use util::task::spawn_listener; pub enum TimerControlMsg { TimerMessage_Fire(~TimerData), @@ -66,8 +67,8 @@ impl Window { pub fn Window(content_chan: pipes::SharedChan) -> Window { Window { - timer_chan: do task::spawn_listener |timer_port: Port, - move content_chan| { + timer_chan: do spawn_listener |timer_port: Port, + move content_chan| { loop { match move timer_port.recv() { TimerMessage_Close => break, diff --git a/src/servo/engine.rs b/src/servo/engine.rs index 0037a58bf08..de1183f577b 100644 --- a/src/servo/engine.rs +++ b/src/servo/engine.rs @@ -6,9 +6,9 @@ use layout::layout_task::LayoutTask; use resource::image_cache_task::{ImageCacheTask, ImageCacheTaskClient}; use resource::resource_task::ResourceTask; use resource::resource_task; +use util::task::spawn_listener; use core::pipes::{Port, Chan}; -use core::task::spawn_listener; use gfx::compositor::Compositor; use gfx::opts::Opts; use gfx::render_task::RenderTask; @@ -16,7 +16,7 @@ use gfx::render_task; use std::cell::Cell; use std::net::url::Url; -pub type EngineTask = comm::Chan; +pub type EngineTask = oldcomm::Chan; pub enum Msg { LoadURLMsg(Url), @@ -24,7 +24,7 @@ pub enum Msg { } pub struct Engine { - request_port: comm::Port, + request_port: oldcomm::Port, compositor: C, render_task: RenderTask, resource_task: ResourceTask, diff --git a/src/servo/html/cssparse.rs b/src/servo/html/cssparse.rs index be3c0293684..1a373c99294 100644 --- a/src/servo/html/cssparse.rs +++ b/src/servo/html/cssparse.rs @@ -18,9 +18,9 @@ pub enum StylesheetProvenance { } pub fn spawn_css_parser(provenance: StylesheetProvenance, - resource_task: ResourceTask) -> comm::Port { - let result_port = comm::Port(); - let result_chan = comm::Chan(&result_port); + resource_task: ResourceTask) -> oldcomm::Port { + let result_port = oldcomm::Port(); + let result_chan = oldcomm::Chan(&result_port); let provenance_cell = Cell(move provenance); do task::spawn |move provenance_cell, copy resource_task| { @@ -51,7 +51,7 @@ fn data_stream(provenance: StylesheetProvenance, resource_task: ResourceTask) -> } } -fn resource_port_to_data_stream(input_port: comm::Port) -> DataStream { +fn resource_port_to_data_stream(input_port: oldcomm::Port) -> DataStream { return || { match input_port.recv() { Payload(move data) => Some(move data), diff --git a/src/servo/html/hubbub_html_parser.rs b/src/servo/html/hubbub_html_parser.rs index f77abe9058f..ee85d72454a 100644 --- a/src/servo/html/hubbub_html_parser.rs +++ b/src/servo/html/hubbub_html_parser.rs @@ -7,8 +7,9 @@ use dom::node::{Comment, Doctype, DoctypeData, Element, Node, NodeScope, Text}; use resource::image_cache_task::ImageCacheTask; use resource::image_cache_task; use resource::resource_task::{Done, Load, Payload, ResourceTask}; +use util::task::{spawn_listener, spawn_conversation}; -use core::comm::{Chan, Port}; +use core::oldcomm::{Chan, Port}; use html::cssparse::{InlineProvenance, StylesheetProvenance, UrlProvenance, spawn_css_parser}; use hubbub::hubbub::Attribute; use hubbub::hubbub; @@ -30,8 +31,8 @@ enum JSMessage { struct HtmlParserResult { root: Node, - style_port: comm::Port>, - js_port: comm::Port, + style_port: oldcomm::Port>, + js_port: oldcomm::Port, } /** @@ -49,8 +50,8 @@ spawned, collates them, and sends them to the given result channel. * `from_parent` - A port on which to receive new links. */ -fn css_link_listener(to_parent : comm::Chan>, - from_parent : comm::Port, +fn css_link_listener(to_parent : oldcomm::Chan>, + from_parent : oldcomm::Port, resource_task: ResourceTask) { let mut result_vec = ~[]; @@ -73,15 +74,15 @@ fn css_link_listener(to_parent : comm::Chan>, to_parent.send(None); } -fn js_script_listener(to_parent : comm::Chan<~[~[u8]]>, from_parent : comm::Port, +fn js_script_listener(to_parent : oldcomm::Chan<~[~[u8]]>, from_parent : oldcomm::Port, resource_task: ResourceTask) { let mut result_vec = ~[]; loop { match from_parent.recv() { JSTaskNewFile(move url) => { - let result_port = comm::Port(); - let result_chan = comm::Chan(&result_port); + let result_port = oldcomm::Port(); + let result_chan = oldcomm::Chan(&result_port); do task::spawn |move url| { let input_port = Port(); // TODO: change copy to move once we can move into closures @@ -163,16 +164,16 @@ pub fn parse_html(scope: NodeScope, resource_task: ResourceTask, image_cache_task: ImageCacheTask) -> HtmlParserResult unsafe { // Spawn a CSS parser to receive links to CSS style sheets. - let (css_port, css_chan): (comm::Port>, comm::Chan) = - do task::spawn_conversation |css_port: comm::Port, - css_chan: comm::Chan>| { + let (css_port, css_chan): (oldcomm::Port>, oldcomm::Chan) = + do spawn_conversation |css_port: oldcomm::Port, + css_chan: oldcomm::Chan>| { css_link_listener(css_chan, css_port, resource_task); }; // Spawn a JS parser to receive JavaScript. - let (js_port, js_chan): (comm::Port, comm::Chan) = - do task::spawn_conversation |js_port: comm::Port, - js_chan: comm::Chan| { + let (js_port, js_chan): (oldcomm::Port, oldcomm::Chan) = + do spawn_conversation |js_port: oldcomm::Port, + js_chan: oldcomm::Chan| { js_script_listener(js_chan, js_port, resource_task); }; @@ -337,7 +338,7 @@ pub fn parse_html(scope: NodeScope, complete_script: |script| { // A little function for holding this lint attr #[allow(non_implicitly_copyable_typarams)] - fn complete_script(scope: &NodeScope, script: hubbub::NodeDataPtr, url: &Url, js_chan: &comm::Chan) unsafe { + fn complete_script(scope: &NodeScope, script: hubbub::NodeDataPtr, url: &Url, js_chan: &oldcomm::Chan) unsafe { do scope.read(&cow::wrap(cast::transmute(script))) |node_contents| { match *node_contents.kind { Element(ref element) if element.tag_name == ~"script" => { diff --git a/src/servo/layout/layout_task.rs b/src/servo/layout/layout_task.rs index 664c20a481f..093bb028055 100644 --- a/src/servo/layout/layout_task.rs +++ b/src/servo/layout/layout_task.rs @@ -15,8 +15,9 @@ use layout::traverse::*; use resource::image_cache_task::{ImageCacheTask, ImageResponseMsg}; use resource::local_image_cache::LocalImageCache; use util::time::time; +use util::task::spawn_listener; -use core::comm::*; // FIXME: Bad! Pipe-ify me. +use core::oldcomm::*; // FIXME: Bad! Pipe-ify me. use core::dvec::DVec; use core::mutable::Mut; use core::task::*; @@ -38,7 +39,7 @@ use std::arc::ARC; use std::cell::Cell; use std::net::url::Url; -pub type LayoutTask = comm::Chan; +pub type LayoutTask = oldcomm::Chan; pub enum LayoutQuery { ContentBox(Node) @@ -53,7 +54,7 @@ enum LayoutQueryResponse_ { pub enum Msg { AddStylesheet(Stylesheet), BuildMsg(BuildData), - QueryMsg(LayoutQuery, comm::Chan), + QueryMsg(LayoutQuery, oldcomm::Chan), ExitMsg } @@ -96,7 +97,7 @@ struct Layout { render_task: RenderTask, image_cache_task: ImageCacheTask, local_image_cache: @LocalImageCache, - from_content: comm::Port, + from_content: oldcomm::Port, font_ctx: @FontContext, // This is used to root auxilliary RCU reader data @@ -106,7 +107,7 @@ struct Layout { fn Layout(render_task: RenderTask, image_cache_task: ImageCacheTask, - from_content: comm::Port, + from_content: oldcomm::Port, opts: &Opts) -> Layout { let fctx = @FontContext::new(opts.render_backend, true); @@ -251,7 +252,7 @@ impl Layout { fn handle_query(query: LayoutQuery, - reply_chan: comm::Chan) { + reply_chan: oldcomm::Chan) { match query { ContentBox(node) => { let response = do node.aux |a| { diff --git a/src/servo/platform/osmain.rs b/src/servo/platform/osmain.rs index f081bba3854..b4ad8a00314 100644 --- a/src/servo/platform/osmain.rs +++ b/src/servo/platform/osmain.rs @@ -20,7 +20,7 @@ use std::cmp::FuzzyEq; use glut::glut; pub struct OSMain { - chan: comm::Chan + chan: oldcomm::Chan } // FIXME: Move me over to opts.rs. @@ -83,7 +83,7 @@ impl AzureDrawTargetImageData : layers::layers::ImageData { } fn mainloop(mode: Mode, - po: comm::Port, + po: oldcomm::Port, dom_event_chan: pipes::SharedChan, opts: &Opts) { let key_handlers: @DVec> = @DVec(); @@ -98,7 +98,7 @@ fn mainloop(mode: Mode, window = GlutWindow(move glut_window); } ShareMode => { - let share_context: ShareGlContext = sharegl::base::new(Size2D(800, 600)); + let share_context: ShareGlContext = sharegl::base::ShareContext::new(Size2D(800, 600)); io::println(fmt!("Sharing ID is %d", share_context.id())); window = ShareWindow(move share_context); } @@ -334,8 +334,16 @@ fn Surface(backend: BackendType) -> Surface { } /// A function for spawning into the platform's main thread -fn on_osmain(f: fn~(po: comm::Port)) -> comm::Chan { - task::task().sched_mode(task::PlatformThread).spawn_listener(move f) +fn on_osmain(f: fn~(po: oldcomm::Port)) -> oldcomm::Chan { + let setup_po = oldcomm::Port(); + let setup_ch = oldcomm::Chan(&setup_po); + do task::task().sched_mode(task::PlatformThread).spawn |move f| { + let po = oldcomm::Port(); + let ch = oldcomm::Chan(&po); + oldcomm::send(setup_ch, ch); + f(move po); + } + oldcomm::recv(setup_po) } // #[cfg(target_os = "linux")] diff --git a/src/servo/servo.rc b/src/servo/servo.rc index def59560c87..502b55829f1 100755 --- a/src/servo/servo.rc +++ b/src/servo/servo.rc @@ -23,97 +23,61 @@ extern mod stb_image; extern mod std; pub mod content { - #[path = "content/content_task.rs"] pub mod content_task; } pub mod css { - #[path = "css/select_handler.rs"] priv mod select_handler; - #[path = "css/node_util.rs"] priv mod node_util; - #[path = "css/node_void_ptr.rs"] priv mod node_void_ptr; - #[path = "css/select.rs"] pub mod select; - #[path = "css/matching.rs"] pub mod matching; - #[path = "css/node_style.rs"] pub mod node_style; } pub mod dom { pub mod bindings { - #[path = "dom/bindings/document.rs"] pub mod document; - #[path = "dom/bindings/element.rs"] pub mod element; - #[path = "dom/bindings/node.rs"] pub mod node; - #[path = "dom/bindings/utils.rs"] pub mod utils; - #[path = "dom/bindings/window.rs"] pub mod window; } - #[path = "dom/cow.rs"] pub mod cow; - #[path = "dom/document.rs"] pub mod document; - #[path = "dom/element.rs"] pub mod element; - #[path = "dom/event.rs"] pub mod event; - #[path = "dom/node.rs"] pub mod node; - #[path = "dom/window.rs"] pub mod window; } pub mod engine; pub mod layout { - #[path = "layout/block.rs"] pub mod block; - #[path = "layout/box.rs"] pub mod box; - #[path = "layout/box_builder.rs"] pub mod box_builder; - #[path = "layout/context.rs"] pub mod context; - #[path = "layout/debug.rs"] pub mod debug; - #[path = "layout/display_list_builder.rs"] pub mod display_list_builder; - #[path = "layout/flow.rs"] pub mod flow; - #[path = "layout/layout_task.rs"] pub mod layout_task; - #[path = "layout/inline.rs"] pub mod inline; - #[path = "layout/root.rs"] pub mod root; - #[path = "layout/text.rs"] pub mod text; - #[path = "layout/traverse.rs"] pub mod traverse; - #[path = "layout/aux.rs"] mod aux; } pub mod html { - #[path = "html/cssparse.rs"] pub mod cssparse; - #[path = "html/hubbub_html_parser.rs"] pub mod hubbub_html_parser; } pub mod platform { - #[path = "platform/base.rs"] pub mod base; - #[path = "platform/osmain.rs"] pub mod osmain; - #[path = "platform/resize_rate_limiter.rs"] priv mod resize_rate_limiter; } @@ -130,7 +94,7 @@ extern mod core_text; use engine::{Engine, ExitMsg, LoadURLMsg}; // FIXME: "ExitMsg" is pollution. use platform::osmain::{AddKeyHandler, OSMain}; -use core::comm::*; // FIXME: Bad! +use core::oldcomm::*; // FIXME: Bad! use core::option::swap_unwrap; use core::pipes::{Port, Chan}; diff --git a/src/servo/util/actor.rs b/src/servo/util/actor.rs index ae1de0508d2..b44f75aeca9 100644 --- a/src/servo/util/actor.rs +++ b/src/servo/util/actor.rs @@ -3,6 +3,7 @@ An actor type */ use pipes::{Port, Chan, SharedChan, stream}; +use core::task; /** The client reference to an actor diff --git a/src/servo/util/mod.rs b/src/servo/util/mod.rs index 730d5fc1c26..a6f201f0953 100644 --- a/src/servo/util/mod.rs +++ b/src/servo/util/mod.rs @@ -3,3 +3,4 @@ pub use gfx::util::time; pub mod actor; pub mod tree; +pub mod task; \ No newline at end of file diff --git a/src/servo/util/task.rs b/src/servo/util/task.rs new file mode 100644 index 00000000000..8621144a070 --- /dev/null +++ b/src/servo/util/task.rs @@ -0,0 +1,25 @@ +use core::task; + +pub fn spawn_listener( + +f: fn~(oldcomm::Port)) -> oldcomm::Chan { + let setup_po = oldcomm::Port(); + let setup_ch = oldcomm::Chan(&setup_po); + do task::spawn |move f| { + let po = oldcomm::Port(); + let ch = oldcomm::Chan(&po); + oldcomm::send(setup_ch, ch); + f(move po); + } + oldcomm::recv(setup_po) +} + +pub fn spawn_conversation + (+f: fn~(oldcomm::Port, oldcomm::Chan)) + -> (oldcomm::Port, oldcomm::Chan) { + let from_child = oldcomm::Port(); + let to_parent = oldcomm::Chan(&from_child); + let to_child = do spawn_listener |move f, from_parent| { + f(from_parent, to_parent) + }; + (from_child, to_child) +}