aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/canvasrenderingcontext2d.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-11-21 12:51:49 +0100
committerAnthony Ramine <n.oxyde@gmail.com>2018-11-21 12:53:50 +0100
commit9a8d03a0f3047d8408b2368d46d144fea670f95d (patch)
tree4459c03931e7f565b65ac681c38a75d63ba1046a /components/script/dom/canvasrenderingcontext2d.rs
parent804d964b7d85c0c4efd0e9e9eb290bd15a24bb9d (diff)
downloadservo-9a8d03a0f3047d8408b2368d46d144fea670f95d.tar.gz
servo-9a8d03a0f3047d8408b2368d46d144fea670f95d.zip
Make HTMLCanvasElement::fetch_all_data return a shared memory blob
Diffstat (limited to 'components/script/dom/canvasrenderingcontext2d.rs')
-rw-r--r--components/script/dom/canvasrenderingcontext2d.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs
index 4840966dfb4..a50cce88870 100644
--- a/components/script/dom/canvasrenderingcontext2d.rs
+++ b/components/script/dom/canvasrenderingcontext2d.rs
@@ -1296,7 +1296,11 @@ impl CanvasRenderingContext2DMethods for CanvasRenderingContext2D {
.ok_or(Error::InvalidState)?
},
CanvasImageSource::HTMLCanvasElement(ref canvas) => {
- canvas.fetch_all_data().ok_or(Error::InvalidState)?
+ let (data, size) = canvas.fetch_all_data().ok_or(Error::InvalidState)?;
+ let data = data
+ .map(|data| data.to_vec())
+ .unwrap_or_else(|| vec![0; size.area() as usize * 4]);
+ (data, size)
},
CanvasImageSource::CSSStyleValue(ref value) => value
.get_url(self.base_url.clone())