mirror of
https://github.com/servo/servo.git
synced 2025-08-02 20:20:14 +01:00
Remove pointless phantom arguments to ScriptThreadFactory and LayoutThreadFactory.
This commit is contained in:
parent
bcea0ada27
commit
9ee8c33a8d
5 changed files with 49 additions and 54 deletions
|
@ -123,7 +123,9 @@ impl Pipeline {
|
|||
/// Returns the channels wrapped in a struct.
|
||||
pub fn create<LTF, STF>(state: InitialPipelineState)
|
||||
-> (Pipeline, UnprivilegedPipelineContent, PrivilegedPipelineContent)
|
||||
where LTF: LayoutThreadFactory, STF: ScriptThreadFactory {
|
||||
where LTF: LayoutThreadFactory,
|
||||
STF: ScriptThreadFactory
|
||||
{
|
||||
// Note: we allow channel creation to panic, since recovering from this
|
||||
// probably requires a general low-memory strategy.
|
||||
let (layout_to_paint_chan, layout_to_paint_port) = util::ipc::optional_ipc_channel();
|
||||
|
@ -416,10 +418,12 @@ pub struct UnprivilegedPipelineContent {
|
|||
|
||||
impl UnprivilegedPipelineContent {
|
||||
pub fn start_all<LTF, STF>(mut self, wait_for_completion: bool)
|
||||
where LTF: LayoutThreadFactory, STF: ScriptThreadFactory {
|
||||
let layout_pair = ScriptThreadFactory::create_layout_channel(None::<&mut STF>);
|
||||
where LTF: LayoutThreadFactory,
|
||||
STF: ScriptThreadFactory
|
||||
{
|
||||
let layout_pair = STF::create_layout_channel();
|
||||
|
||||
ScriptThreadFactory::create(None::<&mut STF>, InitialScriptState {
|
||||
STF::create(InitialScriptState {
|
||||
id: self.id,
|
||||
parent_info: self.parent_info,
|
||||
compositor: self.script_to_compositor_chan,
|
||||
|
@ -440,23 +444,22 @@ impl UnprivilegedPipelineContent {
|
|||
content_process_shutdown_chan: self.script_content_process_shutdown_chan.clone(),
|
||||
}, &layout_pair, self.load_data.clone());
|
||||
|
||||
LayoutThreadFactory::create(None::<&mut LTF>,
|
||||
self.id,
|
||||
self.load_data.url.clone(),
|
||||
self.parent_info.is_some(),
|
||||
layout_pair,
|
||||
self.pipeline_port.expect("No pipeline port."),
|
||||
self.layout_to_constellation_chan,
|
||||
self.panic_chan,
|
||||
self.script_chan.clone(),
|
||||
self.layout_to_paint_chan.clone(),
|
||||
self.image_cache_thread,
|
||||
self.font_cache_thread,
|
||||
self.time_profiler_chan,
|
||||
self.mem_profiler_chan,
|
||||
self.layout_shutdown_chan,
|
||||
self.layout_content_process_shutdown_chan.clone(),
|
||||
self.webrender_api_sender);
|
||||
LTF::create(self.id,
|
||||
self.load_data.url.clone(),
|
||||
self.parent_info.is_some(),
|
||||
layout_pair,
|
||||
self.pipeline_port.expect("No pipeline port."),
|
||||
self.layout_to_constellation_chan,
|
||||
self.panic_chan,
|
||||
self.script_chan.clone(),
|
||||
self.layout_to_paint_chan.clone(),
|
||||
self.image_cache_thread,
|
||||
self.font_cache_thread,
|
||||
self.time_profiler_chan,
|
||||
self.mem_profiler_chan,
|
||||
self.layout_shutdown_chan,
|
||||
self.layout_content_process_shutdown_chan.clone(),
|
||||
self.webrender_api_sender);
|
||||
|
||||
if wait_for_completion {
|
||||
let _ = self.script_content_process_shutdown_port.recv();
|
||||
|
|
|
@ -247,8 +247,7 @@ pub struct LayoutThread {
|
|||
|
||||
impl LayoutThreadFactory for LayoutThread {
|
||||
/// Spawns a new layout thread.
|
||||
fn create(_phantom: Option<&mut LayoutThread>,
|
||||
id: PipelineId,
|
||||
fn create(id: PipelineId,
|
||||
url: Url,
|
||||
is_iframe: bool,
|
||||
chan: OpaqueScriptLayoutChannel,
|
||||
|
@ -731,23 +730,22 @@ impl LayoutThread {
|
|||
}
|
||||
|
||||
fn create_layout_thread(&self, info: NewLayoutThreadInfo) {
|
||||
LayoutThreadFactory::create(None::<&mut LayoutThread>,
|
||||
info.id,
|
||||
info.url.clone(),
|
||||
info.is_parent,
|
||||
info.layout_pair,
|
||||
info.pipeline_port,
|
||||
info.constellation_chan,
|
||||
info.panic_chan,
|
||||
info.script_chan.clone(),
|
||||
info.paint_chan.to::<LayoutToPaintMsg>(),
|
||||
self.image_cache_thread.clone(),
|
||||
self.font_cache_thread.clone(),
|
||||
self.time_profiler_chan.clone(),
|
||||
self.mem_profiler_chan.clone(),
|
||||
info.layout_shutdown_chan,
|
||||
info.content_process_shutdown_chan,
|
||||
self.webrender_api.as_ref().map(|wr| wr.clone_sender()));
|
||||
LayoutThread::create(info.id,
|
||||
info.url.clone(),
|
||||
info.is_parent,
|
||||
info.layout_pair,
|
||||
info.pipeline_port,
|
||||
info.constellation_chan,
|
||||
info.panic_chan,
|
||||
info.script_chan.clone(),
|
||||
info.paint_chan.to::<LayoutToPaintMsg>(),
|
||||
self.image_cache_thread.clone(),
|
||||
self.font_cache_thread.clone(),
|
||||
self.time_profiler_chan.clone(),
|
||||
self.mem_profiler_chan.clone(),
|
||||
info.layout_shutdown_chan,
|
||||
info.content_process_shutdown_chan,
|
||||
self.webrender_api.as_ref().map(|wr| wr.clone_sender()));
|
||||
}
|
||||
|
||||
/// Enters a quiescent state in which no new messages will be processed until an `ExitNow` is
|
||||
|
|
|
@ -41,9 +41,7 @@ pub struct LayoutControlChan(pub IpcSender<LayoutControlMsg>);
|
|||
// A static method creating a layout thread
|
||||
// Here to remove the compositor -> layout dependency
|
||||
pub trait LayoutThreadFactory {
|
||||
// FIXME: use a proper static method
|
||||
fn create(_phantom: Option<&mut Self>,
|
||||
id: PipelineId,
|
||||
fn create(id: PipelineId,
|
||||
url: Url,
|
||||
is_iframe: bool,
|
||||
chan: OpaqueScriptLayoutChannel,
|
||||
|
|
|
@ -421,18 +421,17 @@ impl<'a> Drop for ScriptMemoryFailsafe<'a> {
|
|||
}
|
||||
|
||||
impl ScriptThreadFactory for ScriptThread {
|
||||
fn create_layout_channel(_phantom: Option<&mut ScriptThread>) -> OpaqueScriptLayoutChannel {
|
||||
fn create_layout_channel() -> OpaqueScriptLayoutChannel {
|
||||
let (chan, port) = channel();
|
||||
ScriptLayoutChan::new(chan, port)
|
||||
}
|
||||
|
||||
fn clone_layout_channel(_phantom: Option<&mut ScriptThread>, pair: &OpaqueScriptLayoutChannel)
|
||||
fn clone_layout_channel(pair: &OpaqueScriptLayoutChannel)
|
||||
-> Box<Any + Send> {
|
||||
box pair.sender() as Box<Any + Send>
|
||||
}
|
||||
|
||||
fn create(_phantom: Option<&mut ScriptThread>,
|
||||
state: InitialScriptState,
|
||||
fn create(state: InitialScriptState,
|
||||
layout_chan: &OpaqueScriptLayoutChannel,
|
||||
load_data: LoadData) {
|
||||
let panic_chan = state.panic_chan.clone();
|
||||
|
@ -1077,9 +1076,8 @@ impl ScriptThread {
|
|||
content_process_shutdown_chan,
|
||||
} = new_layout_info;
|
||||
|
||||
let layout_pair = ScriptThread::create_layout_channel(None::<&mut ScriptThread>);
|
||||
let layout_pair = ScriptThread::create_layout_channel();
|
||||
let layout_chan = LayoutChan(*ScriptThread::clone_layout_channel(
|
||||
None::<&mut ScriptThread>,
|
||||
&layout_pair).downcast::<Sender<layout_interface::Msg>>().unwrap());
|
||||
|
||||
let layout_creation_info = NewLayoutThreadInfo {
|
||||
|
|
|
@ -346,15 +346,13 @@ pub struct ScriptControlChan(pub IpcSender<ConstellationControlMsg>);
|
|||
/// crate.
|
||||
pub trait ScriptThreadFactory {
|
||||
/// Create a `ScriptThread`.
|
||||
fn create(_phantom: Option<&mut Self>,
|
||||
state: InitialScriptState,
|
||||
fn create(state: InitialScriptState,
|
||||
layout_chan: &OpaqueScriptLayoutChannel,
|
||||
load_data: LoadData);
|
||||
/// Create a script -> layout channel (`Sender`, `Receiver` pair).
|
||||
fn create_layout_channel(_phantom: Option<&mut Self>) -> OpaqueScriptLayoutChannel;
|
||||
fn create_layout_channel() -> OpaqueScriptLayoutChannel;
|
||||
/// Clone the `Sender` in `pair`.
|
||||
fn clone_layout_channel(_phantom: Option<&mut Self>, pair: &OpaqueScriptLayoutChannel)
|
||||
-> Box<Any + Send>;
|
||||
fn clone_layout_channel(pair: &OpaqueScriptLayoutChannel) -> Box<Any + Send>;
|
||||
}
|
||||
|
||||
/// Messages sent from the script thread to the compositor
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue