aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmlcanvaselement.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/htmlcanvaselement.rs')
-rw-r--r--components/script/dom/htmlcanvaselement.rs29
1 files changed, 21 insertions, 8 deletions
diff --git a/components/script/dom/htmlcanvaselement.rs b/components/script/dom/htmlcanvaselement.rs
index a01a2c4fe26..3c52d99ea4f 100644
--- a/components/script/dom/htmlcanvaselement.rs
+++ b/components/script/dom/htmlcanvaselement.rs
@@ -2,7 +2,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-use canvas_traits::CanvasMsg;
use dom::attr::Attr;
use dom::attr::AttrHelpers;
use dom::bindings::codegen::Bindings::HTMLCanvasElementBinding;
@@ -27,12 +26,13 @@ use dom::webglrenderingcontext::{WebGLRenderingContext, LayoutCanvasWebGLRenderi
use util::str::{DOMString, parse_unsigned_integer};
use js::jsapi::{JSContext, HandleValue};
use offscreen_gl_context::GLContextAttributes;
+use canvas_traits::CanvasMsg;
+use ipc_channel::ipc::IpcSender;
use euclid::size::Size2D;
use std::cell::Cell;
use std::default::Default;
-use std::sync::mpsc::Sender;
const DEFAULT_WIDTH: u32 = 300;
const DEFAULT_HEIGHT: u32 = 150;
@@ -106,7 +106,9 @@ impl HTMLCanvasElement {
pub trait LayoutHTMLCanvasElementHelpers {
#[allow(unsafe_code)]
- unsafe fn get_renderer(&self) -> Option<Sender<CanvasMsg>>;
+ unsafe fn get_renderer_id(&self) -> Option<usize>;
+ #[allow(unsafe_code)]
+ unsafe fn get_ipc_renderer(&self) -> Option<IpcSender<CanvasMsg>>;
#[allow(unsafe_code)]
unsafe fn get_canvas_width(&self) -> u32;
#[allow(unsafe_code)]
@@ -115,14 +117,25 @@ pub trait LayoutHTMLCanvasElementHelpers {
impl LayoutHTMLCanvasElementHelpers for LayoutJS<HTMLCanvasElement> {
#[allow(unsafe_code)]
- unsafe fn get_renderer(&self) -> Option<Sender<CanvasMsg>> {
+ unsafe fn get_renderer_id(&self) -> Option<usize> {
+ let ref canvas = *self.unsafe_get();
+ if let Some(context) = canvas.context.get() {
+ match context {
+ CanvasContext::Context2d(context) => Some(context.to_layout().get_renderer_id()),
+ CanvasContext::WebGL(context) => Some(context.to_layout().get_renderer_id()),
+ }
+ } else {
+ None
+ }
+ }
+
+ #[allow(unsafe_code)]
+ unsafe fn get_ipc_renderer(&self) -> Option<IpcSender<CanvasMsg>> {
let ref canvas = *self.unsafe_get();
if let Some(context) = canvas.context.get() {
match context {
- CanvasContext::Context2d(context)
- => Some(context.to_layout().get_renderer()),
- CanvasContext::WebGL(context)
- => Some(context.to_layout().get_renderer()),
+ CanvasContext::Context2d(context) => Some(context.to_layout().get_ipc_renderer()),
+ CanvasContext::WebGL(context) => Some(context.to_layout().get_ipc_renderer()),
}
} else {
None