From e5276f06e333603f6a4622e6ae799a1db3e9a86e Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 20 Jun 2014 17:04:55 -0700 Subject: [PATCH] gfx: Don't crash if there is no graphics metadata. --- src/components/gfx/render_task.rs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/components/gfx/render_task.rs b/src/components/gfx/render_task.rs index 9420c08d9ae..1a2dd1f36c2 100644 --- a/src/components/gfx/render_task.rs +++ b/src/components/gfx/render_task.rs @@ -291,8 +291,6 @@ impl RenderTask { let render_backend = self.opts.render_backend; let native_graphics_context = self.compositor.get_graphics_metadata().map( |md| NativePaintingGraphicsContext::from_metadata(&md)); - let native_graphics_context = native_graphics_context.expect("need native graphics context"); - let native_graphics_context = Some(native_graphics_context); let font_ctx_info = FontContextInfo { backend: self.opts.render_backend, needs_font_list: false, @@ -309,13 +307,24 @@ impl RenderTask { let render_data = match render_msg { WorkerRender(render_data) => render_data, WorkerUnusedBuffer(buffer) => { - buffer_map.insert(native_graphics_context.get_ref(), buffer); + match native_graphics_context { + None => {} + Some(ref native_graphics_context) => { + buffer_map.insert(native_graphics_context, + buffer); + } + } continue } WorkerExit(tx) => { // Cleanup and tell the RenderTask we're done - buffer_map.clear(native_graphics_context.get_ref()); - drop(native_graphics_context.take_unwrap()); + match native_graphics_context { + None => {} + Some(native_graphics_context) => { + buffer_map.clear( + &native_graphics_context); + } + } tx.send(()); break }