diff options
author | tanishka <109246904+taniishkaaa@users.noreply.github.com> | 2024-10-22 22:31:42 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-22 17:01:42 +0000 |
commit | 78d48ae2fb58e4c2e2a27a21d6e90f81c9fe951b (patch) | |
tree | 13e212336d0cced7af2c73e33f1daa5865273e21 | |
parent | 01c9ecfe01a06ca509bdaf1d5a77d1a0d0938b2c (diff) | |
download | servo-78d48ae2fb58e4c2e2a27a21d6e90f81c9fe951b.tar.gz servo-78d48ae2fb58e4c2e2a27a21d6e90f81c9fe951b.zip |
Fix GC borrow hazard in XRSession::UpdateTargetFrameRate (#33929)
* Fix GC borrow hazard in XRSession::UpdateTargetFrameRate
Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com>
* Limit borrow scope
Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com>
---------
Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com>
-rw-r--r-- | components/script/dom/xrsession.rs | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/components/script/dom/xrsession.rs b/components/script/dom/xrsession.rs index 3fb0a14fe13..33d27a8eebc 100644 --- a/components/script/dom/xrsession.rs +++ b/components/script/dom/xrsession.rs @@ -1031,21 +1031,23 @@ impl XRSessionMethods for XRSession { comp: InRealm, can_gc: CanGc, ) -> Rc<Promise> { - let mut session = self.session.borrow_mut(); - let supported_frame_rates = session.supported_frame_rates(); let promise = Promise::new_in_current_realm(comp, can_gc); - - if self.mode == XRSessionMode::Inline || - supported_frame_rates.is_empty() || - self.ended.get() { - promise.reject_error(Error::InvalidState); - return promise; - } + let session = self.session.borrow(); + let supported_frame_rates = session.supported_frame_rates(); + + if self.mode == XRSessionMode::Inline || + supported_frame_rates.is_empty() || + self.ended.get() + { + promise.reject_error(Error::InvalidState); + return promise; + } - if !supported_frame_rates.contains(&*rate) { - promise.reject_error(Error::Type("Provided framerate not supported".into())); - return promise; + if !supported_frame_rates.contains(&*rate) { + promise.reject_error(Error::Type("Provided framerate not supported".into())); + return promise; + } } *self.update_framerate_promise.borrow_mut() = Some(promise.clone()); @@ -1075,7 +1077,7 @@ impl XRSessionMethods for XRSession { }), ); - session.update_frame_rate(*rate, sender); + self.session.borrow_mut().update_frame_rate(*rate, sender); promise } |