mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
webgl: Don't dirty canvas element while in immersive mode.
This commit is contained in:
parent
148c24c29c
commit
ab75808b8c
3 changed files with 18 additions and 0 deletions
|
@ -59,6 +59,10 @@ impl Navigator {
|
|||
pub fn new(window: &Window) -> DomRoot<Navigator> {
|
||||
reflect_dom_object(Box::new(Navigator::new_inherited()), window)
|
||||
}
|
||||
|
||||
pub fn xr(&self) -> Option<DomRoot<XRSystem>> {
|
||||
self.xr.get()
|
||||
}
|
||||
}
|
||||
|
||||
impl NavigatorMethods for Navigator {
|
||||
|
|
|
@ -502,6 +502,12 @@ impl WebGLRenderingContext {
|
|||
return;
|
||||
}
|
||||
|
||||
// Dirtying the canvas is unnecessary if we're actively displaying immersive
|
||||
// XR content right now.
|
||||
if self.global().as_window().in_immersive_xr_session() {
|
||||
return;
|
||||
}
|
||||
|
||||
self.canvas
|
||||
.upcast::<Node>()
|
||||
.dirty(NodeDamage::OtherNodeDamage);
|
||||
|
|
|
@ -2225,6 +2225,14 @@ impl Window {
|
|||
pub fn webrender_document(&self) -> DocumentId {
|
||||
self.webrender_document
|
||||
}
|
||||
|
||||
pub fn in_immersive_xr_session(&self) -> bool {
|
||||
self.navigator
|
||||
.get()
|
||||
.as_ref()
|
||||
.and_then(|nav| nav.xr())
|
||||
.map_or(false, |xr| xr.pending_or_active_session())
|
||||
}
|
||||
}
|
||||
|
||||
impl Window {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue