mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
merge from master
This commit is contained in:
commit
6e774ea6eb
1044 changed files with 46059 additions and 1506 deletions
|
@ -5,6 +5,7 @@
|
|||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
||||
use angle::hl::{BuiltInResources, Output, ShaderValidator};
|
||||
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLError, WebGLResult, WebGLShaderParameter};
|
||||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
|
||||
use dom::bindings::codegen::Bindings::WebGLShaderBinding;
|
||||
use dom::bindings::global::GlobalRef;
|
||||
|
@ -12,7 +13,7 @@ use dom::bindings::js::Root;
|
|||
use dom::bindings::reflector::reflect_dom_object;
|
||||
use dom::webglobject::WebGLObject;
|
||||
use ipc_channel::ipc::{self, IpcSender};
|
||||
use std::cell::{Cell, RefCell};
|
||||
use std::cell::Cell;
|
||||
use std::sync::{ONCE_INIT, Once};
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Debug, JSTraceable, HeapSizeOf)]
|
||||
|
@ -27,8 +28,8 @@ pub struct WebGLShader {
|
|||
webgl_object: WebGLObject,
|
||||
id: u32,
|
||||
gl_type: u32,
|
||||
source: RefCell<Option<String>>,
|
||||
info_log: RefCell<Option<String>>,
|
||||
source: DOMRefCell<Option<String>>,
|
||||
info_log: DOMRefCell<Option<String>>,
|
||||
is_deleted: Cell<bool>,
|
||||
compilation_status: Cell<ShaderCompilationStatus>,
|
||||
#[ignore_heap_size_of = "Defined in ipc-channel"]
|
||||
|
@ -50,8 +51,8 @@ impl WebGLShader {
|
|||
webgl_object: WebGLObject::new_inherited(),
|
||||
id: id,
|
||||
gl_type: shader_type,
|
||||
source: RefCell::new(None),
|
||||
info_log: RefCell::new(None),
|
||||
source: DOMRefCell::new(None),
|
||||
info_log: DOMRefCell::new(None),
|
||||
is_deleted: Cell::new(false),
|
||||
compilation_status: Cell::new(ShaderCompilationStatus::NotCompiled),
|
||||
renderer: renderer,
|
||||
|
@ -121,7 +122,7 @@ impl WebGLShader {
|
|||
pub fn delete(&self) {
|
||||
if !self.is_deleted.get() {
|
||||
self.is_deleted.set(true);
|
||||
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteShader(self.id))).unwrap()
|
||||
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteShader(self.id)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,3 +153,9 @@ impl WebGLShader {
|
|||
*self.source.borrow_mut() = Some(source);
|
||||
}
|
||||
}
|
||||
|
||||
impl Drop for WebGLShader {
|
||||
fn drop(&mut self) {
|
||||
self.delete();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue