diff --git a/components/canvas/canvas_data.rs b/components/canvas/canvas_data.rs index 1a4d1ccfc98..33da592c235 100644 --- a/components/canvas/canvas_data.rs +++ b/components/canvas/canvas_data.rs @@ -982,7 +982,10 @@ impl<'a> CanvasData<'a> { updates.push(ImageUpdate::Update(image_key, descriptor, data)); }, None => { - let key = self.webrender_api.generate_key(); + let key = match self.webrender_api.generate_key() { + Ok(key) => key, + Err(()) => return, + }; updates.push(ImageUpdate::Add(key, descriptor, data)); self.image_key = Some(key); debug!("New image {:?}.", self.image_key); diff --git a/components/canvas/canvas_paint_thread.rs b/components/canvas/canvas_paint_thread.rs index 6832a5cddc8..3c6bbfb53a8 100644 --- a/components/canvas/canvas_paint_thread.rs +++ b/components/canvas/canvas_paint_thread.rs @@ -26,7 +26,7 @@ pub enum ImageUpdate { } pub trait WebrenderApi { - fn generate_key(&self) -> webrender_api::ImageKey; + fn generate_key(&self) -> Result; fn update_images(&self, updates: Vec); fn clone(&self) -> Box; } diff --git a/components/servo/lib.rs b/components/servo/lib.rs index 25fdd2261b4..6dda30ed6ea 100644 --- a/components/servo/lib.rs +++ b/components/servo/lib.rs @@ -949,12 +949,12 @@ impl gfx_traits::WebrenderApi for FontCacheWR { struct CanvasWebrenderApi(CompositorProxy); impl canvas_paint_thread::WebrenderApi for CanvasWebrenderApi { - fn generate_key(&self) -> webrender_api::ImageKey { + fn generate_key(&self) -> Result { let (sender, receiver) = unbounded(); let _ = self.0.send(Msg::Webrender(WebrenderMsg::Canvas( WebrenderCanvasMsg::GenerateKey(sender), ))); - receiver.recv().unwrap() + receiver.recv().map_err(|_| ()) } fn update_images(&self, updates: Vec) { let _ = self.0.send(Msg::Webrender(WebrenderMsg::Canvas(