aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglprogram.rs
diff options
context:
space:
mode:
authorDaniel <ddefisher@gmail.com>2016-05-07 12:06:17 -0400
committerDaniel <ddefisher@gmail.com>2016-05-09 20:54:57 -0400
commit8a5b0b897212b82b5d38d565355f2fdacd1bbe88 (patch)
treeaef54eab9a6037c41c9cf4ccbe7a627de49a2c21 /components/script/dom/webglprogram.rs
parenta09b2374f9d0a54b5ca02ee7b219cd30b5841eb4 (diff)
downloadservo-8a5b0b897212b82b5d38d565355f2fdacd1bbe88.tar.gz
servo-8a5b0b897212b82b5d38d565355f2fdacd1bbe88.zip
Implement IsShader fn and IsTexture fn for WebGLRenderingContext
Diffstat (limited to 'components/script/dom/webglprogram.rs')
-rw-r--r--components/script/dom/webglprogram.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/components/script/dom/webglprogram.rs b/components/script/dom/webglprogram.rs
index 6cc122cf459..504a13ec339 100644
--- a/components/script/dom/webglprogram.rs
+++ b/components/script/dom/webglprogram.rs
@@ -68,6 +68,14 @@ impl WebGLProgram {
if !self.is_deleted.get() {
self.is_deleted.set(true);
let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteProgram(self.id)));
+
+ if let Some(shader) = self.fragment_shader.get() {
+ shader.decrement_attached_counter();
+ }
+
+ if let Some(shader) = self.vertex_shader.get() {
+ shader.decrement_attached_counter();
+ }
}
}
@@ -118,6 +126,7 @@ impl WebGLProgram {
}
shader_slot.set(Some(shader));
+ shader.increment_attached_counter();
self.renderer.send(CanvasMsg::WebGL(WebGLCommand::AttachShader(self.id, shader.id()))).unwrap();
@@ -144,6 +153,7 @@ impl WebGLProgram {
}
shader_slot.set(None);
+ shader.decrement_attached_counter();
self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DetachShader(self.id, shader.id()))).unwrap();