aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglprogram.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-03-24 13:06:00 +0100
committerAnthony Ramine <n.oxyde@gmail.com>2018-03-24 13:58:07 +0100
commita62bed82e40220d0272b31fff542c30ea70e9ff7 (patch)
treebed96a3398ac1002bc0580e5b992e6bbc63b56b9 /components/script/dom/webglprogram.rs
parent2befe47384ffcea59ff83caf62973160ac02ee35 (diff)
downloadservo-a62bed82e40220d0272b31fff542c30ea70e9ff7.tar.gz
servo-a62bed82e40220d0272b31fff542c30ea70e9ff7.zip
Implement WebGLRenderingContextBase.getAttachedShaders
Diffstat (limited to 'components/script/dom/webglprogram.rs')
-rw-r--r--components/script/dom/webglprogram.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/components/script/dom/webglprogram.rs b/components/script/dom/webglprogram.rs
index f08c40f5500..115b866b984 100644
--- a/components/script/dom/webglprogram.rs
+++ b/components/script/dom/webglprogram.rs
@@ -367,6 +367,19 @@ impl WebGLProgram {
self.renderer.send(WebGLCommand::GetProgramParameter(self.id, param_id, sender)).unwrap();
receiver.recv().unwrap()
}
+
+ pub fn attached_shaders(&self) -> WebGLResult<Vec<DomRoot<WebGLShader>>> {
+ if self.is_deleted.get() {
+ return Err(WebGLError::InvalidValue);
+ }
+ Ok(match (self.vertex_shader.get(), self.fragment_shader.get()) {
+ (Some(vertex_shader), Some(fragment_shader)) => {
+ vec![vertex_shader, fragment_shader]
+ }
+ (Some(shader), None) | (None, Some(shader)) => vec![shader],
+ (None, None) => vec![]
+ })
+ }
}
impl Drop for WebGLProgram {