Wrap SharedLayoutContext::canvas_layers_sender in a Mutex.

This commit is contained in:
Ms2ger 2015-11-06 23:08:05 +01:00
parent 8fc75704c9
commit e9b77628ce
3 changed files with 3 additions and 4 deletions

View file

@ -108,7 +108,7 @@ pub struct SharedLayoutContext {
pub new_animations_sender: Mutex<Sender<Animation>>,
/// A channel to send canvas renderers to paint task, in order to correctly paint the layers
pub canvas_layers_sender: Sender<(LayerId, IpcSender<CanvasMsg>)>,
pub canvas_layers_sender: Mutex<Sender<(LayerId, IpcSender<CanvasMsg>)>>,
/// The visible rects for each layer, as reported to us by the compositor.
pub visible_rects: Arc<HashMap<LayerId, Rect<Au>, DefaultState<FnvHasher>>>,
@ -123,7 +123,6 @@ pub struct SharedLayoutContext {
// FIXME(#6569) This implementations is unsound:
// XXX UNSOUND!!! for image_cache_task
// XXX UNSOUND!!! for stylist
// XXX UNSOUND!!! for canvas_layers_sender
#[allow(unsafe_code)]
unsafe impl Sync for SharedLayoutContext {}

View file

@ -1150,7 +1150,7 @@ impl FragmentDisplayListBuilding for Fragment {
let data = receiver.recv().unwrap();
// Propagate the layer and the renderer to the paint task.
layout_context.shared.canvas_layers_sender.send(
layout_context.shared.canvas_layers_sender.lock().unwrap().send(
(layer_id, (*ipc_renderer).clone())).unwrap();
data

View file

@ -456,7 +456,7 @@ impl LayoutTask {
viewport_size: rw_data.viewport_size.clone(),
screen_size_changed: screen_size_changed,
font_cache_task: Mutex::new(self.font_cache_task.clone()),
canvas_layers_sender: self.canvas_layers_sender.clone(),
canvas_layers_sender: Mutex::new(self.canvas_layers_sender.clone()),
stylist: &*rw_data.stylist,
url: (*url).clone(),
visible_rects: rw_data.visible_rects.clone(),