Skip to content

Commit

Permalink
webgl: Ignore webgl communication errors when dropping vertex array o…
Browse files Browse the repository at this point in the history
…bjects.
  • Loading branch information
jdm committed Mar 20, 2020
1 parent 0fef1bf commit 3a3397f
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 12 deletions.
10 changes: 5 additions & 5 deletions components/script/dom/vertexarrayobject.rs
Expand Up @@ -59,11 +59,11 @@ impl VertexArrayObject {

for attrib_data in &**self.vertex_attribs.borrow() {
if let Some(buffer) = attrib_data.buffer() {
buffer.decrement_attached_counter();
buffer.decrement_attached_counter(fallible);
}
}
if let Some(buffer) = self.element_array_buffer.get() {
buffer.decrement_attached_counter();
buffer.decrement_attached_counter(fallible);
}
}

Expand Down Expand Up @@ -136,7 +136,7 @@ impl VertexArrayObject {
offset as u32,
));
if let Some(old) = data.buffer() {
old.decrement_attached_counter();
old.decrement_attached_counter(false);
}

*data = VertexAttribData {
Expand Down Expand Up @@ -168,7 +168,7 @@ impl VertexArrayObject {
if b.id() != buffer.id() {
continue;
}
b.decrement_attached_counter();
b.decrement_attached_counter(false);
}
attrib.buffer = None;
}
Expand All @@ -177,7 +177,7 @@ impl VertexArrayObject {
.get()
.map_or(false, |b| buffer == &*b)
{
buffer.decrement_attached_counter();
buffer.decrement_attached_counter(false);
self.element_array_buffer.set(None);
}
}
Expand Down
6 changes: 3 additions & 3 deletions components/script/dom/webgl2renderingcontext.rs
Expand Up @@ -222,7 +222,7 @@ impl WebGL2RenderingContext {

fn unbind_from(&self, slot: &MutNullableDom<WebGLBuffer>, buffer: &WebGLBuffer) {
if slot.get().map_or(false, |b| buffer == &*b) {
buffer.decrement_attached_counter();
buffer.decrement_attached_counter(false);
slot.set(None);
}
}
Expand Down Expand Up @@ -3405,7 +3405,7 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {

for slot in &[&generic_slot, &indexed_binding.buffer] {
if let Some(old) = slot.get() {
old.decrement_attached_counter();
old.decrement_attached_counter(false);
}
slot.set(buffer);
}
Expand Down Expand Up @@ -3483,7 +3483,7 @@ impl WebGL2RenderingContextMethods for WebGL2RenderingContext {

for slot in &[&generic_slot, &indexed_binding.buffer] {
if let Some(old) = slot.get() {
old.decrement_attached_counter();
old.decrement_attached_counter(false);
}
slot.set(buffer);
}
Expand Down
4 changes: 2 additions & 2 deletions components/script/dom/webglbuffer.rs
Expand Up @@ -166,15 +166,15 @@ impl WebGLBuffer {
);
}

pub fn decrement_attached_counter(&self) {
pub fn decrement_attached_counter(&self, fallible: bool) {
self.attached_counter.set(
self.attached_counter
.get()
.checked_sub(1)
.expect("refcount underflowed"),
);
if self.is_deleted() {
self.delete(false);
self.delete(fallible);
}
}

Expand Down
4 changes: 2 additions & 2 deletions components/script/dom/webglrenderingcontext.rs
Expand Up @@ -1317,7 +1317,7 @@ impl WebGLRenderingContext {

self.send_command(WebGLCommand::BindBuffer(target, buffer.map(|b| b.id())));
if let Some(old) = slot.get() {
old.decrement_attached_counter();
old.decrement_attached_counter(false);
}

slot.set(buffer);
Expand Down Expand Up @@ -2565,7 +2565,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
.map_or(false, |b| buffer == &*b)
{
self.bound_buffer_array.set(None);
buffer.decrement_attached_counter();
buffer.decrement_attached_counter(false);
}
buffer.mark_for_deletion(false);
}
Expand Down

0 comments on commit 3a3397f

Please sign in to comment.