aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglframebuffer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/webglframebuffer.rs')
-rw-r--r--components/script/dom/webglframebuffer.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/components/script/dom/webglframebuffer.rs b/components/script/dom/webglframebuffer.rs
index 9dc4d7c16be..8cdf2900214 100644
--- a/components/script/dom/webglframebuffer.rs
+++ b/components/script/dom/webglframebuffer.rs
@@ -17,6 +17,8 @@ use webrender_traits::{WebGLCommand, WebGLFramebufferBindingRequest};
pub struct WebGLFramebuffer {
webgl_object: WebGLObject,
id: u32,
+ /// target can only be gl::FRAMEBUFFER at the moment
+ target: Cell<Option<u32>>,
is_deleted: Cell<bool>,
#[ignore_heap_size_of = "Defined in ipc-channel"]
renderer: IpcSender<CanvasMsg>,
@@ -27,6 +29,7 @@ impl WebGLFramebuffer {
WebGLFramebuffer {
webgl_object: WebGLObject::new_inherited(),
id: id,
+ target: Cell::new(None),
is_deleted: Cell::new(false),
renderer: renderer,
}
@@ -54,6 +57,7 @@ impl WebGLFramebuffer {
}
pub fn bind(&self, target: u32) {
+ self.target.set(Some(target));
let cmd = WebGLCommand::BindFramebuffer(target, WebGLFramebufferBindingRequest::Explicit(self.id));
self.renderer.send(CanvasMsg::WebGL(cmd)).unwrap();
}
@@ -64,6 +68,14 @@ impl WebGLFramebuffer {
let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteFramebuffer(self.id)));
}
}
+
+ pub fn is_deleted(&self) -> bool {
+ self.is_deleted.get()
+ }
+
+ pub fn target(&self) -> Option<u32> {
+ self.target.get()
+ }
}
impl Drop for WebGLFramebuffer {