diff options
author | Emilio Cobos Álvarez <ecoal95@gmail.com> | 2015-09-25 18:10:42 +0200 |
---|---|---|
committer | Emilio Cobos Álvarez <ecoal95@gmail.com> | 2015-09-25 18:10:50 +0200 |
commit | 90775a7595e063d44d6b3410ebe27b194b05f6ff (patch) | |
tree | 2586f23a108bea0c8f2c4e450dd9abd6526563c2 | |
parent | d12dbf94f2a55174b7cdaa5bd539d90b83813145 (diff) | |
download | servo-90775a7595e063d44d6b3410ebe27b194b05f6ff.tar.gz servo-90775a7595e063d44d6b3410ebe27b194b05f6ff.zip |
script: Return a white bitmap if the canvas has a size but no context
-rw-r--r-- | components/script/dom/htmlcanvaselement.rs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs index 73be8d760ee..7677f1afcaf 100644 --- a/components/script/dom/htmlcanvaselement.rs +++ b/components/script/dom/htmlcanvaselement.rs @@ -27,6 +27,7 @@ use js::jsapi::{HandleValue, JSContext}; use offscreen_gl_context::GLContextAttributes; use std::cell::Cell; use std::default::Default; +use std::iter::repeat; use util::str::{DOMString, parse_unsigned_integer}; const DEFAULT_WIDTH: u32 = 300; @@ -213,16 +214,15 @@ impl HTMLCanvasElement { return None } - let renderer = match self.ipc_renderer() { - Some(renderer) => renderer, - None => return None, - }; - - let (sender, receiver) = ipc::channel().unwrap(); - let msg = CanvasMsg::FromLayout(FromLayoutMsg::SendPixelContents(sender)); - renderer.send(msg).unwrap(); + let data = if let Some(renderer) = self.ipc_renderer() { + let (sender, receiver) = ipc::channel().unwrap(); + let msg = CanvasMsg::FromLayout(FromLayoutMsg::SendPixelContents(sender)); + renderer.send(msg).unwrap(); - let data = receiver.recv().unwrap().to_vec(); + receiver.recv().unwrap().to_vec() + } else { + repeat(0xffu8).take((size.height as usize) * (size.width as usize) * 4).collect() + }; Some((data, size)) } |