aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <ecoal95@gmail.com>2015-09-25 18:10:42 +0200
committerEmilio Cobos Álvarez <ecoal95@gmail.com>2015-09-25 18:10:50 +0200
commit90775a7595e063d44d6b3410ebe27b194b05f6ff (patch)
tree2586f23a108bea0c8f2c4e450dd9abd6526563c2
parentd12dbf94f2a55174b7cdaa5bd539d90b83813145 (diff)
downloadservo-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.rs18
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))
}