mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Introduce GlobalScope::flush_promise_jobs
This commit is contained in:
parent
44ca9f3d71
commit
6e3be6d894
4 changed files with 16 additions and 13 deletions
|
@ -92,15 +92,6 @@ impl<'a> GlobalRef<'a> {
|
||||||
GlobalRef::Worker(ref worker) => worker.enqueue_promise_job(job),
|
GlobalRef::Worker(ref worker) => worker.enqueue_promise_job(job),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Start the process of executing the pending promise callbacks. They will be invoked
|
|
||||||
/// in FIFO order, synchronously, at some point in the future.
|
|
||||||
pub fn flush_promise_jobs(&self) {
|
|
||||||
match *self {
|
|
||||||
GlobalRef::Window(_) => ScriptThread::flush_promise_jobs(*self),
|
|
||||||
GlobalRef::Worker(ref worker) => worker.flush_promise_jobs(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Reflectable for GlobalRef<'a> {
|
impl<'a> Reflectable for GlobalRef<'a> {
|
||||||
|
|
|
@ -27,7 +27,7 @@ use msg::constellation_msg::PipelineId;
|
||||||
use net_traits::{CoreResourceThread, ResourceThreads, IpcSend};
|
use net_traits::{CoreResourceThread, ResourceThreads, IpcSend};
|
||||||
use profile_traits::{mem, time};
|
use profile_traits::{mem, time};
|
||||||
use script_runtime::{ScriptChan, maybe_take_panic_result};
|
use script_runtime::{ScriptChan, maybe_take_panic_result};
|
||||||
use script_thread::{MainThreadScriptChan, RunnableWrapper};
|
use script_thread::{MainThreadScriptChan, RunnableWrapper, ScriptThread};
|
||||||
use script_traits::{MsDuration, ScriptMsg as ConstellationMsg, TimerEvent};
|
use script_traits::{MsDuration, ScriptMsg as ConstellationMsg, TimerEvent};
|
||||||
use script_traits::{TimerEventId, TimerEventRequest, TimerSource};
|
use script_traits::{TimerEventId, TimerEventRequest, TimerSource};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
|
@ -408,6 +408,18 @@ impl GlobalScope {
|
||||||
}
|
}
|
||||||
unreachable!();
|
unreachable!();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Start the process of executing the pending promise callbacks. They will be invoked
|
||||||
|
/// in FIFO order, synchronously, at some point in the future.
|
||||||
|
pub fn flush_promise_jobs(&self) {
|
||||||
|
if self.is::<Window>() {
|
||||||
|
return ScriptThread::flush_promise_jobs(self);
|
||||||
|
}
|
||||||
|
if let Some(worker) = self.downcast::<WorkerGlobalScope>() {
|
||||||
|
return worker.flush_promise_jobs();
|
||||||
|
}
|
||||||
|
unreachable!();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn timestamp_in_ms(time: Timespec) -> u64 {
|
fn timestamp_in_ms(time: Timespec) -> u64 {
|
||||||
|
|
|
@ -142,7 +142,7 @@ impl PromiseJobQueue {
|
||||||
self.promise_job_queue.borrow_mut().push(job);
|
self.promise_job_queue.borrow_mut().push(job);
|
||||||
if !self.pending_promise_job_runnable.get() {
|
if !self.pending_promise_job_runnable.get() {
|
||||||
self.pending_promise_job_runnable.set(true);
|
self.pending_promise_job_runnable.set(true);
|
||||||
global.flush_promise_jobs();
|
global.as_global_scope().flush_promise_jobs();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2180,11 +2180,11 @@ impl ScriptThread {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn flush_promise_jobs(global: GlobalRef) {
|
pub fn flush_promise_jobs(global: &GlobalScope) {
|
||||||
SCRIPT_THREAD_ROOT.with(|root| {
|
SCRIPT_THREAD_ROOT.with(|root| {
|
||||||
let script_thread = unsafe { &*root.get().unwrap() };
|
let script_thread = unsafe { &*root.get().unwrap() };
|
||||||
let _ = script_thread.dom_manipulation_task_source.queue(
|
let _ = script_thread.dom_manipulation_task_source.queue(
|
||||||
box FlushPromiseJobs, global.as_global_scope());
|
box FlushPromiseJobs, global);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue