Permalink
Browse files

Add machinery to assert single-threadedness from geckolib.

MozReview-Commit-ID: 9LBNm2h5Ct3
  • Loading branch information...
bholley committed Jan 11, 2018
1 parent a061f2a commit ac74cf7a603621444411b3dd4b37a157df73b5cc
Showing with 15 additions and 0 deletions.
  1. +4 −0 components/style/gecko/generated/bindings.rs
  2. +11 −0 ports/geckolib/glue.rs
@@ -1597,4 +1597,8 @@ extern "C" {
pub fn Gecko_GetElementsWithId ( aDocument : * const nsIDocument , aId : * mut nsAtom , ) -> * const nsTArray < * mut Element > ;
} extern "C" {
pub fn Gecko_GetBoolPrefValue ( pref_name : * const :: std :: os :: raw :: c_char , ) -> bool ;
} extern "C" {
pub fn Gecko_IsInServoTraversal ( ) -> bool ;
} extern "C" {
pub fn Gecko_IsMainThread ( ) -> bool ;
}
View
@@ -216,6 +216,16 @@ unsafe fn dummy_url_data() -> &'static RefPtr<URLExtraData> {
RefPtr::from_ptr_ref(&DUMMY_URL_DATA)
}
#[allow(dead_code)]
fn is_main_thread() -> bool {
unsafe { bindings::Gecko_IsMainThread() }
}
#[allow(dead_code)]
fn is_in_servo_traversal() -> bool {
unsafe { bindings::Gecko_IsInServoTraversal() }
}
fn create_shared_context<'a>(
global_style_data: &GlobalStyleData,
guard: &'a SharedRwLockReadGuard,
@@ -1335,6 +1345,7 @@ fn read_locked_arc<T, R, F>(raw: &<Locked<T> as HasFFI>::FFIType, func: F) -> R
unsafe fn read_locked_arc_unchecked<T, R, F>(raw: &<Locked<T> as HasFFI>::FFIType, func: F) -> R
where Locked<T>: HasArcFFI, F: FnOnce(&T) -> R
{
debug_assert!(is_main_thread() && !is_in_servo_traversal());
read_locked_arc(raw, func)
}

0 comments on commit ac74cf7

Please sign in to comment.