зеркало из https://github.com/mozilla/gecko-dev.git
servo: Merge #5360 - implementing MainThreadRunnable in ScriptTask (from snf:main_thread_runnable); r=jdm
Source-Repo: https://github.com/servo/servo Source-Revision: 7f587f6cb56b1dae1a56dec36754007ef4d376ac
This commit is contained in:
Родитель
1200ff0934
Коммит
7875932ceb
|
@ -155,6 +155,10 @@ pub trait Runnable {
|
||||||
fn handler(self: Box<Self>);
|
fn handler(self: Box<Self>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait MainThreadRunnable {
|
||||||
|
fn handler(self: Box<Self>, script_task: &ScriptTask);
|
||||||
|
}
|
||||||
|
|
||||||
/// Messages used to control script event loops, such as ScriptTask and
|
/// Messages used to control script event loops, such as ScriptTask and
|
||||||
/// DedicatedWorkerGlobalScope.
|
/// DedicatedWorkerGlobalScope.
|
||||||
pub enum ScriptMsg {
|
pub enum ScriptMsg {
|
||||||
|
@ -176,6 +180,8 @@ pub enum ScriptMsg {
|
||||||
DOMMessage(StructuredCloneData),
|
DOMMessage(StructuredCloneData),
|
||||||
/// Generic message that encapsulates event handling.
|
/// Generic message that encapsulates event handling.
|
||||||
RunnableMsg(Box<Runnable+Send>),
|
RunnableMsg(Box<Runnable+Send>),
|
||||||
|
/// Generic message for running tasks in the ScriptTask
|
||||||
|
MainThreadRunnableMsg(Box<MainThreadRunnable+Send>),
|
||||||
/// A DOM object's last pinned reference was removed (dispatched to all tasks).
|
/// A DOM object's last pinned reference was removed (dispatched to all tasks).
|
||||||
RefcountCleanup(TrustedReference),
|
RefcountCleanup(TrustedReference),
|
||||||
/// The final network response for a page has arrived.
|
/// The final network response for a page has arrived.
|
||||||
|
@ -675,6 +681,8 @@ impl ScriptTask {
|
||||||
panic!("unexpected message"),
|
panic!("unexpected message"),
|
||||||
ScriptMsg::RunnableMsg(runnable) =>
|
ScriptMsg::RunnableMsg(runnable) =>
|
||||||
runnable.handler(),
|
runnable.handler(),
|
||||||
|
ScriptMsg::MainThreadRunnableMsg(runnable) =>
|
||||||
|
runnable.handler(self),
|
||||||
ScriptMsg::RefcountCleanup(addr) =>
|
ScriptMsg::RefcountCleanup(addr) =>
|
||||||
LiveDOMReferences::cleanup(self.get_cx(), addr),
|
LiveDOMReferences::cleanup(self.get_cx(), addr),
|
||||||
ScriptMsg::PageFetchComplete(id, subpage, response) =>
|
ScriptMsg::PageFetchComplete(id, subpage, response) =>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче