mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Terminate timer scheduler thread during shutdown
This commit is contained in:
parent
6a795f4795
commit
fb878f33d1
8 changed files with 47 additions and 23 deletions
|
@ -18,7 +18,8 @@ use ipc_channel::ipc::IpcSender;
|
|||
use js::jsapi::{HandleValue, Heap};
|
||||
use js::jsval::{JSVal, UndefinedValue};
|
||||
use script_traits::{MsDuration, precise_time_ms};
|
||||
use script_traits::{TimerEvent, TimerEventId, TimerEventRequest, TimerSource};
|
||||
use script_traits::{TimerEvent, TimerEventId, TimerEventRequest};
|
||||
use script_traits::{TimerSchedulerMsg, TimerSource};
|
||||
use servo_config::prefs::PREFS;
|
||||
use std::cell::Cell;
|
||||
use std::cmp::{self, Ord, Ordering};
|
||||
|
@ -35,7 +36,7 @@ pub struct OneshotTimers {
|
|||
#[ignore_heap_size_of = "Defined in std"]
|
||||
timer_event_chan: IpcSender<TimerEvent>,
|
||||
#[ignore_heap_size_of = "Defined in std"]
|
||||
scheduler_chan: IpcSender<TimerEventRequest>,
|
||||
scheduler_chan: IpcSender<TimerSchedulerMsg>,
|
||||
next_timer_handle: Cell<OneshotTimerHandle>,
|
||||
timers: DOMRefCell<Vec<OneshotTimer>>,
|
||||
suspended_since: Cell<Option<MsDuration>>,
|
||||
|
@ -109,7 +110,7 @@ impl PartialEq for OneshotTimer {
|
|||
|
||||
impl OneshotTimers {
|
||||
pub fn new(timer_event_chan: IpcSender<TimerEvent>,
|
||||
scheduler_chan: IpcSender<TimerEventRequest>)
|
||||
scheduler_chan: IpcSender<TimerSchedulerMsg>)
|
||||
-> OneshotTimers {
|
||||
OneshotTimers {
|
||||
js_timers: JsTimers::new(),
|
||||
|
@ -267,7 +268,7 @@ impl OneshotTimers {
|
|||
let delay = Length::new(timer.scheduled_for.get().saturating_sub(precise_time_ms().get()));
|
||||
let request = TimerEventRequest(self.timer_event_chan.clone(), timer.source,
|
||||
expected_event_id, delay);
|
||||
self.scheduler_chan.send(request).unwrap();
|
||||
self.scheduler_chan.send(TimerSchedulerMsg::Request(request)).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue