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>
This commit is contained in:
tanishka 2024-10-22 22:31:42 +05:30 committed by GitHub
parent 01c9ecfe01
commit 78d48ae2fb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1031,9 +1031,10 @@ 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);
{
let session = self.session.borrow();
let supported_frame_rates = session.supported_frame_rates();
if self.mode == XRSessionMode::Inline ||
supported_frame_rates.is_empty() ||
@ -1047,6 +1048,7 @@ impl XRSessionMethods for XRSession {
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
}