mirror of
https://github.com/servo/servo.git
synced 2025-06-20 23:28:59 +01:00
process parts. This will make it easier to adapt to IPC. The trickiest part here was to make script tasks spawn new layout tasks directly instead of having the pipeline do it for them. The latter approach will not work in multiprocess mode, because layout and script must run in the same address space and the pipeline cannot inject tasks into another process.
58 lines
2 KiB
Rust
58 lines
2 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* 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/. */
|
|
|
|
#![feature(custom_derive, plugin)]
|
|
#![plugin(serde_macros)]
|
|
|
|
extern crate euclid;
|
|
extern crate gfx;
|
|
extern crate ipc_channel;
|
|
extern crate script_traits;
|
|
extern crate msg;
|
|
extern crate profile_traits;
|
|
extern crate net_traits;
|
|
extern crate serde;
|
|
extern crate url;
|
|
extern crate util;
|
|
|
|
// This module contains traits in layout used generically
|
|
// in the rest of Servo.
|
|
// The traits are here instead of in layout so
|
|
// that these modules won't have to depend on layout.
|
|
|
|
use gfx::font_cache_task::FontCacheTask;
|
|
use gfx::paint_task::PaintChan;
|
|
use ipc_channel::ipc::{IpcReceiver, IpcSender};
|
|
use msg::constellation_msg::{ConstellationChan, Failure, PipelineId};
|
|
use profile_traits::mem;
|
|
use profile_traits::time;
|
|
use net_traits::image_cache_task::ImageCacheTask;
|
|
use script_traits::{LayoutControlMsg, ScriptControlChan, OpaqueScriptLayoutChannel};
|
|
use std::sync::mpsc::Sender;
|
|
use url::Url;
|
|
|
|
/// A channel wrapper for constellation messages
|
|
#[derive(Clone, Deserialize, Serialize)]
|
|
pub struct LayoutControlChan(pub IpcSender<LayoutControlMsg>);
|
|
|
|
// A static method creating a layout task
|
|
// Here to remove the compositor -> layout dependency
|
|
pub trait LayoutTaskFactory {
|
|
// FIXME: use a proper static method
|
|
fn create(_phantom: Option<&mut Self>,
|
|
id: PipelineId,
|
|
url: Url,
|
|
is_iframe: bool,
|
|
chan: OpaqueScriptLayoutChannel,
|
|
pipeline_port: IpcReceiver<LayoutControlMsg>,
|
|
constellation_chan: ConstellationChan,
|
|
failure_msg: Failure,
|
|
script_chan: ScriptControlChan,
|
|
paint_chan: PaintChan,
|
|
image_cache_task: ImageCacheTask,
|
|
font_cache_task: FontCacheTask,
|
|
time_profiler_chan: time::ProfilerChan,
|
|
mem_profiler_chan: mem::ProfilerChan,
|
|
shutdown_chan: Sender<()>);
|
|
}
|