mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
webgl: Update framebuffer completion status when attached renderbuffer/texture storage changes.
This commit is contained in:
parent
5bd1e86d42
commit
ea715a7a4c
3 changed files with 57 additions and 3 deletions
|
@ -10,7 +10,8 @@ use crate::dom::bindings::codegen::Bindings::WebGLRenderbufferBinding;
|
|||
use crate::dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
|
||||
use crate::dom::bindings::inheritance::Castable;
|
||||
use crate::dom::bindings::reflector::{reflect_dom_object, DomObject};
|
||||
use crate::dom::bindings::root::DomRoot;
|
||||
use crate::dom::bindings::root::{DomRoot, MutNullableDom};
|
||||
use crate::dom::webglframebuffer::WebGLFramebuffer;
|
||||
use crate::dom::webglobject::WebGLObject;
|
||||
use crate::dom::webglrenderingcontext::WebGLRenderingContext;
|
||||
use canvas_traits::webgl::{
|
||||
|
@ -28,6 +29,7 @@ pub struct WebGLRenderbuffer {
|
|||
size: Cell<Option<(i32, i32)>>,
|
||||
internal_format: Cell<Option<u32>>,
|
||||
is_initialized: Cell<bool>,
|
||||
attached_framebuffer: MutNullableDom<WebGLFramebuffer>,
|
||||
}
|
||||
|
||||
impl WebGLRenderbuffer {
|
||||
|
@ -40,6 +42,7 @@ impl WebGLRenderbuffer {
|
|||
internal_format: Cell::new(None),
|
||||
size: Cell::new(None),
|
||||
is_initialized: Cell::new(false),
|
||||
attached_framebuffer: Default::default(),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -186,6 +189,10 @@ impl WebGLRenderbuffer {
|
|||
self.internal_format.set(Some(internal_format));
|
||||
self.is_initialized.set(false);
|
||||
|
||||
if let Some(fb) = self.attached_framebuffer.get() {
|
||||
fb.update_status();
|
||||
}
|
||||
|
||||
self.upcast::<WebGLObject>()
|
||||
.context()
|
||||
.send_command(WebGLCommand::RenderbufferStorage(
|
||||
|
@ -199,6 +206,14 @@ impl WebGLRenderbuffer {
|
|||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn attach_to_framebuffer(&self, fb: &WebGLFramebuffer) {
|
||||
self.attached_framebuffer.set(Some(fb));
|
||||
}
|
||||
|
||||
pub fn detach_from_framebuffer(&self) {
|
||||
self.attached_framebuffer.set(None);
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for WebGLRenderbuffer {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue