aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2018-08-31 10:16:57 -0400
committerJosh Matthews <josh@joshmatthews.net>2018-09-10 16:31:31 -0400
commit8ede221a83bf751eea8520b3431c1f222ecfbdea (patch)
tree7093d3a934d29436c2ac9645c922041f8f5975bd /components
parentbb8d9ba74c024a317fbbd49811541632404ef51c (diff)
downloadservo-8ede221a83bf751eea8520b3431c1f222ecfbdea.tar.gz
servo-8ede221a83bf751eea8520b3431c1f222ecfbdea.zip
webgl: Ensure that renderbuffers have been bound before attaching to a framebuffer.
Diffstat (limited to 'components')
-rw-r--r--components/script/dom/webglframebuffer.rs2
-rw-r--r--components/script/dom/webglrenderbuffer.rs6
2 files changed, 6 insertions, 2 deletions
diff --git a/components/script/dom/webglframebuffer.rs b/components/script/dom/webglframebuffer.rs
index 76be81aee87..b79393a7863 100644
--- a/components/script/dom/webglframebuffer.rs
+++ b/components/script/dom/webglframebuffer.rs
@@ -274,7 +274,7 @@ impl WebGLFramebuffer {
let rb_id = match rb {
Some(rb) => {
- rb.attach(self);
+ rb.attach(self)?;
*binding.borrow_mut() = Some(WebGLFramebufferAttachment::Renderbuffer(Dom::from_ref(rb)));
Some(rb.id())
}
diff --git a/components/script/dom/webglrenderbuffer.rs b/components/script/dom/webglrenderbuffer.rs
index 7ee108ebdc5..9637dae02e1 100644
--- a/components/script/dom/webglrenderbuffer.rs
+++ b/components/script/dom/webglrenderbuffer.rs
@@ -174,8 +174,12 @@ impl WebGLRenderbuffer {
Ok(())
}
- pub fn attach(&self, framebuffer: &WebGLFramebuffer) {
+ pub fn attach(&self, framebuffer: &WebGLFramebuffer) -> WebGLResult<()> {
+ if !self.ever_bound.get() {
+ return Err(WebGLError::InvalidOperation);
+ }
self.attached_framebuffers.borrow_mut().push(Dom::from_ref(framebuffer));
+ Ok(())
}
pub fn unattach(&self, fb: &WebGLFramebuffer) {