diff --git a/Cargo.toml b/Cargo.toml index 95489ed33f..fa82c3c943 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,9 @@ authors = ["Glenn Watson "] [dependencies.freetype] git = "https://github.com/servo/rust-freetype" +[dependencies.ipc-channel] +git = "https://github.com/pcwalton/ipc-channel" + [dependencies.webrender_traits] git = "https://github.com/glennw/webrender_traits" diff --git a/src/lib.rs b/src/lib.rs index 9ea2b988f2..02751de9a3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -53,6 +53,7 @@ extern crate euclid; extern crate fnv; extern crate gleam; extern crate freetype; +extern crate ipc_channel; extern crate scoped_threadpool; extern crate simd; extern crate time; diff --git a/src/render_backend.rs b/src/render_backend.rs index 3a10fafa7b..0e2addcb3d 100644 --- a/src/render_backend.rs +++ b/src/render_backend.rs @@ -1,6 +1,7 @@ use euclid::{Rect, Size2D}; use frame::Frame; use internal_types::{FontTemplate, ResultMsg, DrawLayer}; +use ipc_channel::ipc::{IpcReceiver, IpcSender}; use resource_cache::ResourceCache; use scene::Scene; use scoped_threadpool; @@ -26,8 +27,8 @@ use webrender_traits::{ApiMsg, IdNamespace, ResourceId, RenderApi, RenderNotifie */ pub struct RenderBackend { - api_rx: Receiver, - api_tx: Sender, + api_rx: IpcReceiver, + api_tx: IpcSender, result_tx: Sender, viewport: Rect, @@ -42,8 +43,8 @@ pub struct RenderBackend { } impl RenderBackend { - pub fn new(api_rx: Receiver, - api_tx: Sender, + pub fn new(api_rx: IpcReceiver, + api_tx: IpcSender, result_tx: Sender, viewport: Rect, device_pixel_ratio: f32, @@ -127,16 +128,12 @@ impl RenderBackend { stacking_context); } ApiMsg::CloneApi(sender) => { - let new_api = RenderApi { - tx: self.api_tx.clone(), - id_namespace: self.next_namespace_id, - next_id: Cell::new(ResourceId(0)), - }; + let result = self.next_namespace_id; let IdNamespace(id_namespace) = self.next_namespace_id; self.next_namespace_id = IdNamespace(id_namespace + 1); - sender.send(new_api).unwrap(); + sender.send(result).unwrap(); } ApiMsg::SetRootStackingContext(stacking_context_id, background_color, diff --git a/src/renderer.rs b/src/renderer.rs index 24a43e99bf..0374d1ad36 100644 --- a/src/renderer.rs +++ b/src/renderer.rs @@ -10,6 +10,7 @@ use internal_types::{TextureUpdateDetails, TextureUpdateList, PackedVertex, Rend use internal_types::{ORTHO_NEAR_PLANE, ORTHO_FAR_PLANE, BoxShadowPart, BasicRotationAngle}; use internal_types::{PackedVertexForTextureCacheUpdate, TextureTarget, CompositionOp}; use internal_types::{BlurDirection, LowLevelFilterOp, DrawCommand, ANGLE_FLOAT_TO_FIXED}; +use ipc_channel::ipc; use render_backend::RenderBackend; use std::collections::HashMap; use std::collections::hash_state::DefaultState; @@ -78,7 +79,7 @@ impl Renderer { device_pixel_ratio: f32, resource_path: PathBuf, enable_aa: bool) -> (Renderer, RenderApi) { - let (api_tx, api_rx) = channel(); + let (api_tx, api_rx) = ipc::channel().unwrap(); let (result_tx, result_rx) = channel(); let initial_viewport = Rect::new(Point2D::zero(), Size2D::new(width as i32, height as i32));