Remove dependency of constellation on canvas

move `ConstellationCanvasMsg` to canvas_traits and start canvas paint thread
to components/servo. This, however, does not remove dependency for conditional
compilation options.
This commit is contained in:
Kunal Mohan 2020-02-05 23:25:52 +05:30
parent 5f55cd5d71
commit a4ba33376a
No known key found for this signature in database
GPG key ID: 2B475A4524237BAC
8 changed files with 25 additions and 25 deletions

2
Cargo.lock generated
View file

@ -534,6 +534,7 @@ dependencies = [
name = "canvas_traits"
version = "0.0.1"
dependencies = [
"crossbeam-channel",
"cssparser",
"euclid",
"ipc-channel",
@ -806,7 +807,6 @@ dependencies = [
"background_hang_monitor",
"backtrace",
"bluetooth_traits",
"canvas",
"canvas_traits",
"compositing",
"crossbeam-channel",

View file

@ -3,8 +3,8 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use crate::canvas_data::*;
use crate::ConstellationCanvasMsg;
use canvas_traits::canvas::*;
use canvas_traits::ConstellationCanvasMsg;
use crossbeam_channel::{select, unbounded, Sender};
use euclid::default::Size2D;
use ipc_channel::ipc::{self, IpcSender};

View file

@ -4,10 +4,6 @@
#![deny(unsafe_code)]
use canvas_traits::canvas::CanvasId;
use crossbeam_channel::Sender;
use euclid::default::Size2D;
#[macro_use]
extern crate bitflags;
#[macro_use]
@ -26,13 +22,3 @@ pub mod canvas_paint_thread;
mod webgl_limits;
mod webgl_mode;
pub mod webgl_thread;
pub enum ConstellationCanvasMsg {
Create {
id_sender: Sender<CanvasId>,
size: Size2D<u64>,
webrender_sender: webrender_api::RenderApiSender,
antialias: bool,
},
Exit,
}

View file

@ -14,6 +14,7 @@ path = "lib.rs"
webgl_backtrace = []
[dependencies]
crossbeam-channel = "0.3"
cssparser = "0.27"
euclid = "0.20"
ipc-channel = "0.12"

View file

@ -6,6 +6,10 @@
#![crate_type = "rlib"]
#![deny(unsafe_code)]
use crate::canvas::CanvasId;
use crossbeam_channel::Sender;
use euclid::default::Size2D;
#[macro_use]
extern crate lazy_static;
#[macro_use]
@ -17,3 +21,13 @@ pub mod canvas;
#[macro_use]
pub mod webgl;
mod webgl_channel;
pub enum ConstellationCanvasMsg {
Create {
id_sender: Sender<CanvasId>,
size: Size2D<u64>,
webrender_sender: webrender_api::RenderApiSender,
antialias: bool,
},
Exit,
}

View file

@ -10,15 +10,10 @@ publish = false
name = "constellation"
path = "lib.rs"
[features]
canvas2d-azure = ["canvas/canvas2d-azure"]
canvas2d-raqote = ["canvas/canvas2d-raqote"]
[dependencies]
background_hang_monitor = { path = "../background_hang_monitor"}
backtrace = "0.3"
bluetooth_traits = { path = "../bluetooth_traits" }
canvas = {path = "../canvas", default-features = false}
canvas_traits = {path = "../canvas_traits"}
compositing = {path = "../compositing"}
crossbeam-channel = "0.3"

View file

@ -103,10 +103,9 @@ use crate::timer_scheduler::TimerScheduler;
use background_hang_monitor::HangMonitorRegister;
use backtrace::Backtrace;
use bluetooth_traits::BluetoothRequest;
use canvas::canvas_paint_thread::CanvasPaintThread;
use canvas::ConstellationCanvasMsg;
use canvas_traits::canvas::{CanvasId, CanvasMsg};
use canvas_traits::webgl::WebGLThreads;
use canvas_traits::ConstellationCanvasMsg;
use compositing::compositor_thread::CompositorProxy;
use compositing::compositor_thread::Msg as ToCompositorMsg;
use compositing::{ConstellationMsg as FromCompositorMsg, SendableFrameTree};
@ -811,6 +810,8 @@ where
is_running_problem_test: bool,
hard_fail: bool,
enable_canvas_antialiasing: bool,
canvas_chan: Sender<ConstellationCanvasMsg>,
ipc_canvas_chan: IpcSender<CanvasMsg>,
) -> (Sender<FromCompositorMsg>, IpcSender<SWManagerMsg>) {
let (compositor_sender, compositor_receiver) = unbounded();
@ -901,8 +902,6 @@ where
}),
);
let (canvas_chan, ipc_canvas_chan) = CanvasPaintThread::start();
let mut constellation: Constellation<Message, LTF, STF> = Constellation {
namespace_receiver,
namespace_sender,

View file

@ -892,6 +892,9 @@ fn create_constellation(
player_context,
event_loop_waker,
};
let (canvas_chan, ipc_canvas_chan) = canvas::canvas_paint_thread::CanvasPaintThread::start();
let (constellation_chan, from_swmanager_sender) = Constellation::<
script_layout_interface::message::Msg,
layout_thread::LayoutThread,
@ -904,6 +907,8 @@ fn create_constellation(
opts.is_running_problem_test,
opts.hard_fail,
opts.enable_canvas_antialiasing,
canvas_chan,
ipc_canvas_chan,
);
if let Some(webvr_constellation_sender) = webvr_constellation_sender {