aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webglprogram.rs
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <ecoal95@gmail.com>2016-01-04 14:17:10 +0100
committerEmilio Cobos Álvarez <ecoal95@gmail.com>2016-01-13 15:28:36 +0100
commit4092ffd245c51704faec97e6da70577fd92d1f94 (patch)
tree6054d28a33f8c951582a2bd914bf1b537a2d5528 /components/script/dom/webglprogram.rs
parentcf479a2b4fd07abf73237fbd365e229787bf6630 (diff)
downloadservo-4092ffd245c51704faec97e6da70577fd92d1f94.tar.gz
servo-4092ffd245c51704faec97e6da70577fd92d1f94.zip
webgl: Check shader compilation status on use_program.
Diffstat (limited to 'components/script/dom/webglprogram.rs')
-rw-r--r--components/script/dom/webglprogram.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/components/script/dom/webglprogram.rs b/components/script/dom/webglprogram.rs
index 272eeae72aa..42eb0a23581 100644
--- a/components/script/dom/webglprogram.rs
+++ b/components/script/dom/webglprogram.rs
@@ -73,8 +73,19 @@ impl WebGLProgram {
}
/// glUseProgram
- pub fn use_program(&self) {
+ pub fn use_program(&self) -> WebGLResult<()> {
+ match self.fragment_shader.get() {
+ Some(ref shader) if shader.successfully_compiled() => {},
+ _ => return Err(WebGLError::InvalidOperation),
+ }
+
+ match self.vertex_shader.get() {
+ Some(ref shader) if shader.successfully_compiled() => {},
+ _ => return Err(WebGLError::InvalidOperation),
+ }
+
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::UseProgram(self.id))).unwrap();
+ Ok(())
}
/// glAttachShader