Fix several hangs / panics during pipeline cleanup of in progress loads.

This fixes a hang found while testing the jQuery test suite.
This commit is contained in:
Glenn Watson 2015-05-19 16:14:25 +10:00
parent 90aacf00f8
commit 35a570ab66
7 changed files with 46 additions and 10 deletions

View file

@ -94,7 +94,13 @@ impl PaintListener for Box<CompositorProxy+'static+Send> {
fn get_graphics_metadata(&mut self) -> Option<NativeGraphicsMetadata> {
let (chan, port) = channel();
self.send(Msg::GetGraphicsMetadata(chan));
port.recv().unwrap()
// If the compositor is shutting down when a paint task
// is being created, the compositor won't respond to
// this message, resulting in an eventual panic. Instead,
// just return None in this case, since the paint task
// will exit shortly and never actually be requested
// to paint buffers by the compositor.
port.recv().unwrap_or(None)
}
fn assign_painted_buffers(&mut self,