mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Don't panic if WebGL thread can't be reached during finalization.
This commit is contained in:
parent
eb4f2d150a
commit
8f5c37c0b5
8 changed files with 78 additions and 43 deletions
|
@ -339,6 +339,12 @@ impl WebGLRenderingContext {
|
|||
.unwrap();
|
||||
}
|
||||
|
||||
pub fn send_command_ignored(&self, command: WebGLCommand) {
|
||||
let _ = self
|
||||
.webgl_sender
|
||||
.send(command, capture_webgl_backtrace(self));
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn send_vr_command(&self, command: WebVRCommand) {
|
||||
self.webgl_sender.send_vr(command).unwrap();
|
||||
|
@ -1039,7 +1045,7 @@ impl WebGLRenderingContext {
|
|||
self.current_vao.set(None);
|
||||
self.send_command(WebGLCommand::BindVertexArray(None));
|
||||
}
|
||||
vao.delete();
|
||||
vao.delete(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2172,7 +2178,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
self.bound_buffer_array.set(None);
|
||||
buffer.decrement_attached_counter();
|
||||
}
|
||||
buffer.mark_for_deletion();
|
||||
buffer.mark_for_deletion(false);
|
||||
}
|
||||
|
||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.6
|
||||
|
@ -2188,7 +2194,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
WebGLFramebufferBindingRequest::Default
|
||||
))
|
||||
);
|
||||
framebuffer.delete()
|
||||
framebuffer.delete(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2205,7 +2211,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
None
|
||||
))
|
||||
);
|
||||
renderbuffer.delete()
|
||||
renderbuffer.delete(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2240,7 +2246,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
));
|
||||
}
|
||||
|
||||
texture.delete()
|
||||
texture.delete(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2248,7 +2254,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
fn DeleteProgram(&self, program: Option<&WebGLProgram>) {
|
||||
if let Some(program) = program {
|
||||
handle_potential_webgl_error!(self, self.validate_ownership(program), return);
|
||||
program.mark_for_deletion()
|
||||
program.mark_for_deletion(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2256,7 +2262,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
|||
fn DeleteShader(&self, shader: Option<&WebGLShader>) {
|
||||
if let Some(shader) = shader {
|
||||
handle_potential_webgl_error!(self, self.validate_ownership(shader), return);
|
||||
shader.mark_for_deletion()
|
||||
shader.mark_for_deletion(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue