Wrap SharedLayoutContext::stylist in a wrapper to make it Sync.

This commit is contained in:
Ms2ger 2015-11-06 23:15:41 +01:00
parent e9b77628ce
commit 647232a495
3 changed files with 10 additions and 5 deletions

View file

@ -74,6 +74,12 @@ fn create_or_get_local_context(shared_layout_context: &SharedLayoutContext)
})
}
pub struct StylistWrapper(pub *const Stylist);
// FIXME(#6569) This implementation is unsound.
#[allow(unsafe_code)]
unsafe impl Sync for StylistWrapper {}
/// Layout information shared among all workers. This must be thread-safe.
pub struct SharedLayoutContext {
/// The shared image cache task.
@ -94,7 +100,7 @@ pub struct SharedLayoutContext {
/// The CSS selector stylist.
///
/// FIXME(#2604): Make this no longer an unsafe pointer once we have fast `RWArc`s.
pub stylist: *const Stylist,
pub stylist: StylistWrapper,
/// The URL.
pub url: Url,
@ -122,7 +128,6 @@ pub struct SharedLayoutContext {
// FIXME(#6569) This implementations is unsound:
// XXX UNSOUND!!! for image_cache_task
// XXX UNSOUND!!! for stylist
#[allow(unsafe_code)]
unsafe impl Sync for SharedLayoutContext {}