mirror of
https://github.com/servo/servo.git
synced 2025-07-25 16:20:36 +01:00
Rework “visible” to “throttled” in constellation + script + compositor (#31816)
This commit is contained in:
parent
9b26dca141
commit
8882507ad0
12 changed files with 124 additions and 129 deletions
|
@ -1966,7 +1966,7 @@ impl Document {
|
|||
|
||||
// If we are running 'fake' animation frames, we unconditionally
|
||||
// set up a one-shot timer for script to execute the rAF callbacks.
|
||||
if self.is_faking_animation_frames() && self.window().visible() {
|
||||
if self.is_faking_animation_frames() && !self.window().throttled() {
|
||||
warn!("Scheduling fake animation frame. Animation frames tick too fast.");
|
||||
let callback = FakeRequestAnimationFrameCallback {
|
||||
document: Trusted::new(self),
|
||||
|
|
|
@ -87,7 +87,7 @@ pub struct HTMLIFrameElement {
|
|||
sandbox: MutNullableDom<DOMTokenList>,
|
||||
sandbox_allowance: Cell<Option<SandboxAllowance>>,
|
||||
load_blocker: DomRefCell<Option<LoadBlocker>>,
|
||||
visibility: Cell<bool>,
|
||||
throttled: Cell<bool>,
|
||||
}
|
||||
|
||||
impl HTMLIFrameElement {
|
||||
|
@ -438,7 +438,7 @@ impl HTMLIFrameElement {
|
|||
sandbox: Default::default(),
|
||||
sandbox_allowance: Cell::new(None),
|
||||
load_blocker: DomRefCell::new(None),
|
||||
visibility: Cell::new(true),
|
||||
throttled: Cell::new(false),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -473,9 +473,9 @@ impl HTMLIFrameElement {
|
|||
self.top_level_browsing_context_id.get()
|
||||
}
|
||||
|
||||
pub fn change_visibility_status(&self, visibility: bool) {
|
||||
if self.visibility.get() != visibility {
|
||||
self.visibility.set(visibility);
|
||||
pub fn set_throttled(&self, throttled: bool) {
|
||||
if self.throttled.get() != throttled {
|
||||
self.throttled.set(throttled);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -349,7 +349,7 @@ pub struct Window {
|
|||
#[no_trace]
|
||||
player_context: WindowGLContext,
|
||||
|
||||
visible: Cell<bool>,
|
||||
throttled: Cell<bool>,
|
||||
|
||||
/// A shared marker for the validity of any cached layout values. A value of true
|
||||
/// indicates that any such values remain valid; any new layout that invalidates
|
||||
|
@ -2454,18 +2454,18 @@ impl Window {
|
|||
self.Document().react_to_environment_changes();
|
||||
}
|
||||
|
||||
/// Slow down/speed up timers based on visibility.
|
||||
pub fn alter_resource_utilization(&self, visible: bool) {
|
||||
self.visible.set(visible);
|
||||
if visible {
|
||||
self.upcast::<GlobalScope>().speed_up_timers();
|
||||
} else {
|
||||
/// Set whether to use less resources by running timers at a heavily limited rate.
|
||||
pub fn set_throttled(&self, throttled: bool) {
|
||||
self.throttled.set(throttled);
|
||||
if throttled {
|
||||
self.upcast::<GlobalScope>().slow_down_timers();
|
||||
} else {
|
||||
self.upcast::<GlobalScope>().speed_up_timers();
|
||||
}
|
||||
}
|
||||
|
||||
pub fn visible(&self) -> bool {
|
||||
self.visible.get()
|
||||
pub fn throttled(&self) -> bool {
|
||||
self.throttled.get()
|
||||
}
|
||||
|
||||
pub fn unminified_js_dir(&self) -> Option<String> {
|
||||
|
@ -2621,7 +2621,7 @@ impl Window {
|
|||
userscripts_path,
|
||||
replace_surrogates,
|
||||
player_context,
|
||||
visible: Cell::new(true),
|
||||
throttled: Cell::new(false),
|
||||
layout_marker: DomRefCell::new(Rc::new(Cell::new(true))),
|
||||
current_event: DomRefCell::new(None),
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue