diff options
author | Josh Matthews <josh@joshmatthews.net> | 2018-08-31 10:16:57 -0400 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2018-09-10 16:31:31 -0400 |
commit | 8ede221a83bf751eea8520b3431c1f222ecfbdea (patch) | |
tree | 7093d3a934d29436c2ac9645c922041f8f5975bd /components | |
parent | bb8d9ba74c024a317fbbd49811541632404ef51c (diff) | |
download | servo-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.rs | 2 | ||||
-rw-r--r-- | components/script/dom/webglrenderbuffer.rs | 6 |
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) { |