зеркало из https://github.com/mozilla/gecko-dev.git
servo: Merge #10291 - #10211: Stop re-exporting webrender_traits WebGL types from canvas_traits (from jfhumann:10211); r=emilio
Source-Repo: https://github.com/servo/servo Source-Revision: 524a004e771b465e3de9ebbc33816e50949d6a25
This commit is contained in:
Родитель
7bc8e96798
Коммит
b60a127aa6
|
@ -2,7 +2,7 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
use canvas_traits::{CanvasCommonMsg, CanvasMsg, CanvasPixelData, CanvasData, CanvasWebGLMsg, FromLayoutMsg};
|
use canvas_traits::{CanvasCommonMsg, CanvasMsg, CanvasPixelData, CanvasData, FromLayoutMsg};
|
||||||
use euclid::size::Size2D;
|
use euclid::size::Size2D;
|
||||||
use gleam::gl;
|
use gleam::gl;
|
||||||
use ipc_channel::ipc::{self, IpcSender, IpcSharedMemory};
|
use ipc_channel::ipc::{self, IpcSender, IpcSharedMemory};
|
||||||
|
@ -42,7 +42,7 @@ impl WebGLPaintThread {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle_webgl_message(&self, message: CanvasWebGLMsg) {
|
pub fn handle_webgl_message(&self, message: webrender_traits::WebGLCommand) {
|
||||||
debug!("WebGL message: {:?}", message);
|
debug!("WebGL message: {:?}", message);
|
||||||
match self.data {
|
match self.data {
|
||||||
WebGLPaintTaskData::WebRender(ref api, id) => {
|
WebGLPaintTaskData::WebRender(ref api, id) => {
|
||||||
|
|
|
@ -36,9 +36,7 @@ use gfx_traits::color;
|
||||||
use ipc_channel::ipc::{IpcSender, IpcSharedMemory};
|
use ipc_channel::ipc::{IpcSender, IpcSharedMemory};
|
||||||
use std::default::Default;
|
use std::default::Default;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
use webrender_traits::{WebGLCommand, WebGLContextId};
|
||||||
pub use webrender_traits::{WebGLFramebufferBindingRequest, WebGLError, WebGLParameter, WebGLResult, WebGLContextId};
|
|
||||||
pub use webrender_traits::WebGLCommand as CanvasWebGLMsg;
|
|
||||||
|
|
||||||
#[derive(Clone, Deserialize, Serialize)]
|
#[derive(Clone, Deserialize, Serialize)]
|
||||||
pub enum FillRule {
|
pub enum FillRule {
|
||||||
|
@ -51,7 +49,7 @@ pub enum CanvasMsg {
|
||||||
Canvas2d(Canvas2dMsg),
|
Canvas2d(Canvas2dMsg),
|
||||||
Common(CanvasCommonMsg),
|
Common(CanvasCommonMsg),
|
||||||
FromLayout(FromLayoutMsg),
|
FromLayout(FromLayoutMsg),
|
||||||
WebGL(CanvasWebGLMsg),
|
WebGL(WebGLCommand),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Deserialize, Serialize)]
|
#[derive(Clone, Deserialize, Serialize)]
|
||||||
|
|
|
@ -60,6 +60,9 @@ features = ["unstable"]
|
||||||
[dependencies.gfx_traits]
|
[dependencies.gfx_traits]
|
||||||
path = "../gfx_traits"
|
path = "../gfx_traits"
|
||||||
|
|
||||||
|
[dependencies.webrender_traits]
|
||||||
|
git = "https://github.com/servo/webrender_traits"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
app_units = {version = "0.2.3", features = ["plugins"]}
|
app_units = {version = "0.2.3", features = ["plugins"]}
|
||||||
bitflags = "0.3"
|
bitflags = "0.3"
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
//! The `no_jsmanaged_fields!()` macro adds an empty implementation of `JSTraceable` to
|
//! The `no_jsmanaged_fields!()` macro adds an empty implementation of `JSTraceable` to
|
||||||
//! a datatype.
|
//! a datatype.
|
||||||
|
|
||||||
use canvas_traits::WebGLError;
|
|
||||||
use canvas_traits::{CanvasGradientStop, LinearGradientStyle, RadialGradientStyle};
|
use canvas_traits::{CanvasGradientStop, LinearGradientStyle, RadialGradientStyle};
|
||||||
use canvas_traits::{CompositionOrBlending, LineCapStyle, LineJoinStyle, RepetitionStyle};
|
use canvas_traits::{CompositionOrBlending, LineCapStyle, LineJoinStyle, RepetitionStyle};
|
||||||
use cssparser::RGBA;
|
use cssparser::RGBA;
|
||||||
|
@ -91,7 +90,7 @@ use style::values::specified::Length;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
use util::str::{DOMString, LengthOrPercentageOrAuto};
|
use util::str::{DOMString, LengthOrPercentageOrAuto};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
use webrender_traits::WebGLError;
|
||||||
|
|
||||||
/// A trait to allow tracing (only) DOM objects.
|
/// A trait to allow tracing (only) DOM objects.
|
||||||
pub trait JSTraceable {
|
pub trait JSTraceable {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
||||||
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLError, WebGLResult};
|
use canvas_traits::CanvasMsg;
|
||||||
use dom::bindings::codegen::Bindings::WebGLBufferBinding;
|
use dom::bindings::codegen::Bindings::WebGLBufferBinding;
|
||||||
use dom::bindings::global::GlobalRef;
|
use dom::bindings::global::GlobalRef;
|
||||||
use dom::bindings::js::Root;
|
use dom::bindings::js::Root;
|
||||||
|
@ -11,6 +11,7 @@ use dom::bindings::reflector::reflect_dom_object;
|
||||||
use dom::webglobject::WebGLObject;
|
use dom::webglobject::WebGLObject;
|
||||||
use ipc_channel::ipc::{self, IpcSender};
|
use ipc_channel::ipc::{self, IpcSender};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
|
use webrender_traits::{WebGLCommand, WebGLError, WebGLResult};
|
||||||
|
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
pub struct WebGLBuffer {
|
pub struct WebGLBuffer {
|
||||||
|
@ -39,7 +40,7 @@ impl WebGLBuffer {
|
||||||
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
|
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
|
||||||
-> Option<Root<WebGLBuffer>> {
|
-> Option<Root<WebGLBuffer>> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateBuffer(sender))).unwrap();
|
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateBuffer(sender))).unwrap();
|
||||||
|
|
||||||
let result = receiver.recv().unwrap();
|
let result = receiver.recv().unwrap();
|
||||||
result.map(|buffer_id| WebGLBuffer::new(global, renderer, *buffer_id))
|
result.map(|buffer_id| WebGLBuffer::new(global, renderer, *buffer_id))
|
||||||
|
@ -65,7 +66,7 @@ impl WebGLBuffer {
|
||||||
} else {
|
} else {
|
||||||
self.target.set(Some(target));
|
self.target.set(Some(target));
|
||||||
}
|
}
|
||||||
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindBuffer(target, self.id))).unwrap();
|
self.renderer.send(CanvasMsg::WebGL(WebGLCommand::BindBuffer(target, self.id))).unwrap();
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -78,7 +79,7 @@ impl WebGLBuffer {
|
||||||
}
|
}
|
||||||
self.capacity.set(data.len());
|
self.capacity.set(data.len());
|
||||||
self.renderer
|
self.renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BufferData(target, data.to_vec(), usage)))
|
.send(CanvasMsg::WebGL(WebGLCommand::BufferData(target, data.to_vec(), usage)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -91,7 +92,7 @@ impl WebGLBuffer {
|
||||||
pub fn delete(&self) {
|
pub fn delete(&self) {
|
||||||
if !self.is_deleted.get() {
|
if !self.is_deleted.get() {
|
||||||
self.is_deleted.set(true);
|
self.is_deleted.set(true);
|
||||||
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteBuffer(self.id)));
|
let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteBuffer(self.id)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
||||||
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLFramebufferBindingRequest};
|
use canvas_traits::{CanvasMsg};
|
||||||
use dom::bindings::codegen::Bindings::WebGLFramebufferBinding;
|
use dom::bindings::codegen::Bindings::WebGLFramebufferBinding;
|
||||||
use dom::bindings::global::GlobalRef;
|
use dom::bindings::global::GlobalRef;
|
||||||
use dom::bindings::js::Root;
|
use dom::bindings::js::Root;
|
||||||
|
@ -11,6 +11,7 @@ use dom::bindings::reflector::reflect_dom_object;
|
||||||
use dom::webglobject::WebGLObject;
|
use dom::webglobject::WebGLObject;
|
||||||
use ipc_channel::ipc::{self, IpcSender};
|
use ipc_channel::ipc::{self, IpcSender};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
|
use webrender_traits::{WebGLCommand, WebGLFramebufferBindingRequest};
|
||||||
|
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
pub struct WebGLFramebuffer {
|
pub struct WebGLFramebuffer {
|
||||||
|
@ -34,7 +35,7 @@ impl WebGLFramebuffer {
|
||||||
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
|
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
|
||||||
-> Option<Root<WebGLFramebuffer>> {
|
-> Option<Root<WebGLFramebuffer>> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateFramebuffer(sender))).unwrap();
|
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateFramebuffer(sender))).unwrap();
|
||||||
|
|
||||||
let result = receiver.recv().unwrap();
|
let result = receiver.recv().unwrap();
|
||||||
result.map(|fb_id| WebGLFramebuffer::new(global, renderer, *fb_id))
|
result.map(|fb_id| WebGLFramebuffer::new(global, renderer, *fb_id))
|
||||||
|
@ -53,14 +54,14 @@ impl WebGLFramebuffer {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn bind(&self, target: u32) {
|
pub fn bind(&self, target: u32) {
|
||||||
let cmd = CanvasWebGLMsg::BindFramebuffer(target, WebGLFramebufferBindingRequest::Explicit(self.id));
|
let cmd = WebGLCommand::BindFramebuffer(target, WebGLFramebufferBindingRequest::Explicit(self.id));
|
||||||
self.renderer.send(CanvasMsg::WebGL(cmd)).unwrap();
|
self.renderer.send(CanvasMsg::WebGL(cmd)).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn delete(&self) {
|
pub fn delete(&self) {
|
||||||
if !self.is_deleted.get() {
|
if !self.is_deleted.get() {
|
||||||
self.is_deleted.set(true);
|
self.is_deleted.set(true);
|
||||||
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteFramebuffer(self.id)));
|
let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteFramebuffer(self.id)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
||||||
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLError, WebGLResult, WebGLParameter};
|
use canvas_traits::CanvasMsg;
|
||||||
use dom::bindings::codegen::Bindings::WebGLProgramBinding;
|
use dom::bindings::codegen::Bindings::WebGLProgramBinding;
|
||||||
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
|
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
|
||||||
use dom::bindings::global::GlobalRef;
|
use dom::bindings::global::GlobalRef;
|
||||||
|
@ -15,6 +15,7 @@ use dom::webglshader::WebGLShader;
|
||||||
use ipc_channel::ipc::{self, IpcSender};
|
use ipc_channel::ipc::{self, IpcSender};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use util::str::DOMString;
|
use util::str::DOMString;
|
||||||
|
use webrender_traits::{WebGLCommand, WebGLError, WebGLParameter, WebGLResult};
|
||||||
|
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
pub struct WebGLProgram {
|
pub struct WebGLProgram {
|
||||||
|
@ -42,7 +43,7 @@ impl WebGLProgram {
|
||||||
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
|
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
|
||||||
-> Option<Root<WebGLProgram>> {
|
-> Option<Root<WebGLProgram>> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateProgram(sender))).unwrap();
|
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateProgram(sender))).unwrap();
|
||||||
|
|
||||||
let result = receiver.recv().unwrap();
|
let result = receiver.recv().unwrap();
|
||||||
result.map(|program_id| WebGLProgram::new(global, renderer, *program_id))
|
result.map(|program_id| WebGLProgram::new(global, renderer, *program_id))
|
||||||
|
@ -63,13 +64,13 @@ impl WebGLProgram {
|
||||||
pub fn delete(&self) {
|
pub fn delete(&self) {
|
||||||
if !self.is_deleted.get() {
|
if !self.is_deleted.get() {
|
||||||
self.is_deleted.set(true);
|
self.is_deleted.set(true);
|
||||||
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteProgram(self.id)));
|
let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteProgram(self.id)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// glLinkProgram
|
/// glLinkProgram
|
||||||
pub fn link(&self) {
|
pub fn link(&self) {
|
||||||
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::LinkProgram(self.id))).unwrap();
|
self.renderer.send(CanvasMsg::WebGL(WebGLCommand::LinkProgram(self.id))).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// glUseProgram
|
/// glUseProgram
|
||||||
|
@ -84,7 +85,7 @@ impl WebGLProgram {
|
||||||
_ => return Err(WebGLError::InvalidOperation),
|
_ => return Err(WebGLError::InvalidOperation),
|
||||||
}
|
}
|
||||||
|
|
||||||
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::UseProgram(self.id))).unwrap();
|
self.renderer.send(CanvasMsg::WebGL(WebGLCommand::UseProgram(self.id))).unwrap();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +105,7 @@ impl WebGLProgram {
|
||||||
|
|
||||||
shader_slot.set(Some(shader));
|
shader_slot.set(Some(shader));
|
||||||
|
|
||||||
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::AttachShader(self.id, shader.id()))).unwrap();
|
self.renderer.send(CanvasMsg::WebGL(WebGLCommand::AttachShader(self.id, shader.id()))).unwrap();
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -121,7 +122,7 @@ impl WebGLProgram {
|
||||||
}
|
}
|
||||||
|
|
||||||
self.renderer
|
self.renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindAttribLocation(self.id, index, String::from(name))))
|
.send(CanvasMsg::WebGL(WebGLCommand::BindAttribLocation(self.id, index, String::from(name))))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -139,7 +140,7 @@ impl WebGLProgram {
|
||||||
|
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.renderer
|
self.renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetAttribLocation(self.id, String::from(name), sender)))
|
.send(CanvasMsg::WebGL(WebGLCommand::GetAttribLocation(self.id, String::from(name), sender)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
Ok(receiver.recv().unwrap())
|
Ok(receiver.recv().unwrap())
|
||||||
}
|
}
|
||||||
|
@ -157,7 +158,7 @@ impl WebGLProgram {
|
||||||
|
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.renderer
|
self.renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetUniformLocation(self.id, String::from(name), sender)))
|
.send(CanvasMsg::WebGL(WebGLCommand::GetUniformLocation(self.id, String::from(name), sender)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
Ok(receiver.recv().unwrap())
|
Ok(receiver.recv().unwrap())
|
||||||
}
|
}
|
||||||
|
@ -165,7 +166,7 @@ impl WebGLProgram {
|
||||||
/// glGetProgramParameter
|
/// glGetProgramParameter
|
||||||
pub fn parameter(&self, param_id: u32) -> WebGLResult<WebGLParameter> {
|
pub fn parameter(&self, param_id: u32) -> WebGLResult<WebGLParameter> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetProgramParameter(self.id, param_id, sender))).unwrap();
|
self.renderer.send(CanvasMsg::WebGL(WebGLCommand::GetProgramParameter(self.id, param_id, sender))).unwrap();
|
||||||
receiver.recv().unwrap()
|
receiver.recv().unwrap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
||||||
use canvas_traits::{CanvasMsg, CanvasWebGLMsg};
|
use canvas_traits::CanvasMsg;
|
||||||
use dom::bindings::codegen::Bindings::WebGLRenderbufferBinding;
|
use dom::bindings::codegen::Bindings::WebGLRenderbufferBinding;
|
||||||
use dom::bindings::global::GlobalRef;
|
use dom::bindings::global::GlobalRef;
|
||||||
use dom::bindings::js::Root;
|
use dom::bindings::js::Root;
|
||||||
|
@ -11,6 +11,7 @@ use dom::bindings::reflector::reflect_dom_object;
|
||||||
use dom::webglobject::WebGLObject;
|
use dom::webglobject::WebGLObject;
|
||||||
use ipc_channel::ipc::{self, IpcSender};
|
use ipc_channel::ipc::{self, IpcSender};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
|
use webrender_traits::WebGLCommand;
|
||||||
|
|
||||||
#[dom_struct]
|
#[dom_struct]
|
||||||
pub struct WebGLRenderbuffer {
|
pub struct WebGLRenderbuffer {
|
||||||
|
@ -34,7 +35,7 @@ impl WebGLRenderbuffer {
|
||||||
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
|
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
|
||||||
-> Option<Root<WebGLRenderbuffer>> {
|
-> Option<Root<WebGLRenderbuffer>> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateRenderbuffer(sender))).unwrap();
|
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateRenderbuffer(sender))).unwrap();
|
||||||
|
|
||||||
let result = receiver.recv().unwrap();
|
let result = receiver.recv().unwrap();
|
||||||
result.map(|renderbuffer_id| WebGLRenderbuffer::new(global, renderer, *renderbuffer_id))
|
result.map(|renderbuffer_id| WebGLRenderbuffer::new(global, renderer, *renderbuffer_id))
|
||||||
|
@ -53,13 +54,13 @@ impl WebGLRenderbuffer {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn bind(&self, target: u32) {
|
pub fn bind(&self, target: u32) {
|
||||||
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindRenderbuffer(target, self.id))).unwrap();
|
self.renderer.send(CanvasMsg::WebGL(WebGLCommand::BindRenderbuffer(target, self.id))).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn delete(&self) {
|
pub fn delete(&self) {
|
||||||
if !self.is_deleted.get() {
|
if !self.is_deleted.get() {
|
||||||
self.is_deleted.set(true);
|
self.is_deleted.set(true);
|
||||||
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteRenderbuffer(self.id)));
|
let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteRenderbuffer(self.id)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,9 +2,7 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
use canvas_traits::WebGLError::*;
|
use canvas_traits::{CanvasCommonMsg, CanvasMsg};
|
||||||
use canvas_traits::{CanvasCommonMsg, CanvasMsg, CanvasWebGLMsg, WebGLError};
|
|
||||||
use canvas_traits::{WebGLFramebufferBindingRequest, WebGLParameter};
|
|
||||||
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
|
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
|
||||||
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{WebGLRenderingContextMethods};
|
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{WebGLRenderingContextMethods};
|
||||||
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{self, WebGLContextAttributes};
|
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::{self, WebGLContextAttributes};
|
||||||
|
@ -37,6 +35,8 @@ use script_traits::ScriptMsg as ConstellationMsg;
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use util::str::DOMString;
|
use util::str::DOMString;
|
||||||
use util::vec::byte_swap;
|
use util::vec::byte_swap;
|
||||||
|
use webrender_traits::WebGLError::*;
|
||||||
|
use webrender_traits::{WebGLCommand, WebGLError, WebGLFramebufferBindingRequest, WebGLParameter};
|
||||||
|
|
||||||
pub const MAX_UNIFORM_AND_ATTRIBUTE_LEN: usize = 256;
|
pub const MAX_UNIFORM_AND_ATTRIBUTE_LEN: usize = 256;
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ impl WebGLRenderingContext {
|
||||||
|
|
||||||
fn vertex_attrib(&self, indx: u32, x: f32, y: f32, z: f32, w: f32) {
|
fn vertex_attrib(&self, indx: u32, x: f32, y: f32, z: f32, w: f32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::VertexAttrib(indx, x, y, z, w)))
|
.send(CanvasMsg::WebGL(WebGLCommand::VertexAttrib(indx, x, y, z, w)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -185,7 +185,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
fn DrawingBufferWidth(&self) -> i32 {
|
fn DrawingBufferWidth(&self) -> i32 {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DrawingBufferWidth(sender)))
|
.send(CanvasMsg::WebGL(WebGLCommand::DrawingBufferWidth(sender)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
receiver.recv().unwrap()
|
receiver.recv().unwrap()
|
||||||
}
|
}
|
||||||
|
@ -194,7 +194,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
fn DrawingBufferHeight(&self) -> i32 {
|
fn DrawingBufferHeight(&self) -> i32 {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DrawingBufferHeight(sender)))
|
.send(CanvasMsg::WebGL(WebGLCommand::DrawingBufferHeight(sender)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
receiver.recv().unwrap()
|
receiver.recv().unwrap()
|
||||||
}
|
}
|
||||||
|
@ -204,7 +204,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
fn GetBufferParameter(&self, _cx: *mut JSContext, target: u32, parameter: u32) -> JSVal {
|
fn GetBufferParameter(&self, _cx: *mut JSContext, target: u32, parameter: u32) -> JSVal {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetBufferParameter(target, parameter, sender)))
|
.send(CanvasMsg::WebGL(WebGLCommand::GetBufferParameter(target, parameter, sender)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) {
|
match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) {
|
||||||
WebGLParameter::Int(val) => Int32Value(val),
|
WebGLParameter::Int(val) => Int32Value(val),
|
||||||
|
@ -220,7 +220,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
fn GetParameter(&self, cx: *mut JSContext, parameter: u32) -> JSVal {
|
fn GetParameter(&self, cx: *mut JSContext, parameter: u32) -> JSVal {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetParameter(parameter, sender)))
|
.send(CanvasMsg::WebGL(WebGLCommand::GetParameter(parameter, sender)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) {
|
match handle_potential_webgl_error!(self, receiver.recv().unwrap(), WebGLParameter::Invalid) {
|
||||||
WebGLParameter::Int(val) => Int32Value(val),
|
WebGLParameter::Int(val) => Int32Value(val),
|
||||||
|
@ -260,7 +260,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
|
|
||||||
// If the send does not succeed, assume context lost
|
// If the send does not succeed, assume context lost
|
||||||
if let Err(_) = self.ipc_renderer
|
if let Err(_) = self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetContextAttributes(sender))) {
|
.send(CanvasMsg::WebGL(WebGLCommand::GetContextAttributes(sender))) {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let attrs = receiver.recv().unwrap();
|
let attrs = receiver.recv().unwrap();
|
||||||
|
@ -289,37 +289,37 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn ActiveTexture(&self, texture: u32) {
|
fn ActiveTexture(&self, texture: u32) {
|
||||||
self.ipc_renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::ActiveTexture(texture))).unwrap();
|
self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::ActiveTexture(texture))).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn BlendColor(&self, r: f32, g: f32, b: f32, a: f32) {
|
fn BlendColor(&self, r: f32, g: f32, b: f32, a: f32) {
|
||||||
self.ipc_renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::BlendColor(r, g, b, a))).unwrap();
|
self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::BlendColor(r, g, b, a))).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn BlendEquation(&self, mode: u32) {
|
fn BlendEquation(&self, mode: u32) {
|
||||||
self.ipc_renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::BlendEquation(mode))).unwrap();
|
self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::BlendEquation(mode))).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn BlendEquationSeparate(&self, mode_rgb: u32, mode_alpha: u32) {
|
fn BlendEquationSeparate(&self, mode_rgb: u32, mode_alpha: u32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BlendEquationSeparate(mode_rgb, mode_alpha)))
|
.send(CanvasMsg::WebGL(WebGLCommand::BlendEquationSeparate(mode_rgb, mode_alpha)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn BlendFunc(&self, src_factor: u32, dest_factor: u32) {
|
fn BlendFunc(&self, src_factor: u32, dest_factor: u32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BlendFunc(src_factor, dest_factor)))
|
.send(CanvasMsg::WebGL(WebGLCommand::BlendFunc(src_factor, dest_factor)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn BlendFuncSeparate(&self, src_rgb: u32, dest_rgb: u32, src_alpha: u32, dest_alpha: u32) {
|
fn BlendFuncSeparate(&self, src_rgb: u32, dest_rgb: u32, src_alpha: u32, dest_alpha: u32) {
|
||||||
self.ipc_renderer.send(
|
self.ipc_renderer.send(
|
||||||
CanvasMsg::WebGL(CanvasWebGLMsg::BlendFuncSeparate(src_rgb, dest_rgb, src_alpha, dest_alpha))).unwrap();
|
CanvasMsg::WebGL(WebGLCommand::BlendFuncSeparate(src_rgb, dest_rgb, src_alpha, dest_alpha))).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
|
||||||
|
@ -356,7 +356,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
} else {
|
} else {
|
||||||
// Unbind the current buffer
|
// Unbind the current buffer
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindBuffer(target, 0)))
|
.send(CanvasMsg::WebGL(WebGLCommand::BindBuffer(target, 0)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -371,7 +371,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
framebuffer.bind(target)
|
framebuffer.bind(target)
|
||||||
} else {
|
} else {
|
||||||
// Bind the default framebuffer
|
// Bind the default framebuffer
|
||||||
let cmd = CanvasWebGLMsg::BindFramebuffer(target, WebGLFramebufferBindingRequest::Default);
|
let cmd = WebGLCommand::BindFramebuffer(target, WebGLFramebufferBindingRequest::Default);
|
||||||
self.ipc_renderer.send(CanvasMsg::WebGL(cmd)).unwrap();
|
self.ipc_renderer.send(CanvasMsg::WebGL(cmd)).unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -387,7 +387,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
} else {
|
} else {
|
||||||
// Unbind the currently bound renderbuffer
|
// Unbind the currently bound renderbuffer
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindRenderbuffer(target, 0)))
|
.send(CanvasMsg::WebGL(WebGLCommand::BindRenderbuffer(target, 0)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -409,7 +409,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
} else {
|
} else {
|
||||||
// Unbind the currently bound texture
|
// Unbind the currently bound texture
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindTexture(target, 0)))
|
.send(CanvasMsg::WebGL(WebGLCommand::BindTexture(target, 0)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -470,7 +470,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
return self.webgl_error(InvalidValue);
|
return self.webgl_error(InvalidValue);
|
||||||
}
|
}
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::BufferSubData(target, offset as isize, data_vec)))
|
.send(CanvasMsg::WebGL(WebGLCommand::BufferSubData(target, offset as isize, data_vec)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
} else {
|
} else {
|
||||||
self.webgl_error(InvalidValue);
|
self.webgl_error(InvalidValue);
|
||||||
|
@ -496,35 +496,35 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.11
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.11
|
||||||
fn Clear(&self, mask: u32) {
|
fn Clear(&self, mask: u32) {
|
||||||
self.ipc_renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::Clear(mask))).unwrap();
|
self.ipc_renderer.send(CanvasMsg::WebGL(WebGLCommand::Clear(mask))).unwrap();
|
||||||
self.mark_as_dirty();
|
self.mark_as_dirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn ClearColor(&self, red: f32, green: f32, blue: f32, alpha: f32) {
|
fn ClearColor(&self, red: f32, green: f32, blue: f32, alpha: f32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::ClearColor(red, green, blue, alpha)))
|
.send(CanvasMsg::WebGL(WebGLCommand::ClearColor(red, green, blue, alpha)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn ClearDepth(&self, depth: f32) {
|
fn ClearDepth(&self, depth: f32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::ClearDepth(depth as f64)))
|
.send(CanvasMsg::WebGL(WebGLCommand::ClearDepth(depth as f64)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn ClearStencil(&self, stencil: i32) {
|
fn ClearStencil(&self, stencil: i32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::ClearStencil(stencil)))
|
.send(CanvasMsg::WebGL(WebGLCommand::ClearStencil(stencil)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn ColorMask(&self, r: bool, g: bool, b: bool, a: bool) {
|
fn ColorMask(&self, r: bool, g: bool, b: bool, a: bool) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::ColorMask(r, g, b, a)))
|
.send(CanvasMsg::WebGL(WebGLCommand::ColorMask(r, g, b, a)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -533,7 +533,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
match mode {
|
match mode {
|
||||||
constants::FRONT | constants::BACK | constants::FRONT_AND_BACK =>
|
constants::FRONT | constants::BACK | constants::FRONT_AND_BACK =>
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::CullFace(mode)))
|
.send(CanvasMsg::WebGL(WebGLCommand::CullFace(mode)))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
_ => self.webgl_error(InvalidEnum),
|
_ => self.webgl_error(InvalidEnum),
|
||||||
}
|
}
|
||||||
|
@ -544,7 +544,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
match mode {
|
match mode {
|
||||||
constants::CW | constants::CCW =>
|
constants::CW | constants::CCW =>
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::FrontFace(mode)))
|
.send(CanvasMsg::WebGL(WebGLCommand::FrontFace(mode)))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
_ => self.webgl_error(InvalidEnum),
|
_ => self.webgl_error(InvalidEnum),
|
||||||
}
|
}
|
||||||
|
@ -557,7 +557,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
constants::GREATER | constants::NOTEQUAL |
|
constants::GREATER | constants::NOTEQUAL |
|
||||||
constants::GEQUAL | constants::ALWAYS =>
|
constants::GEQUAL | constants::ALWAYS =>
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DepthFunc(func)))
|
.send(CanvasMsg::WebGL(WebGLCommand::DepthFunc(func)))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
_ => self.webgl_error(InvalidEnum),
|
_ => self.webgl_error(InvalidEnum),
|
||||||
}
|
}
|
||||||
|
@ -566,14 +566,14 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn DepthMask(&self, flag: bool) {
|
fn DepthMask(&self, flag: bool) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DepthMask(flag)))
|
.send(CanvasMsg::WebGL(WebGLCommand::DepthMask(flag)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn DepthRange(&self, near: f32, far: f32) {
|
fn DepthRange(&self, near: f32, far: f32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DepthRange(near as f64, far as f64)))
|
.send(CanvasMsg::WebGL(WebGLCommand::DepthRange(near as f64, far as f64)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -584,7 +584,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
constants::POLYGON_OFFSET_FILL | constants::SAMPLE_ALPHA_TO_COVERAGE | constants::SAMPLE_COVERAGE |
|
constants::POLYGON_OFFSET_FILL | constants::SAMPLE_ALPHA_TO_COVERAGE | constants::SAMPLE_COVERAGE |
|
||||||
constants::SAMPLE_COVERAGE_INVERT | constants::SCISSOR_TEST =>
|
constants::SAMPLE_COVERAGE_INVERT | constants::SCISSOR_TEST =>
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Enable(cap)))
|
.send(CanvasMsg::WebGL(WebGLCommand::Enable(cap)))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
_ => self.webgl_error(InvalidEnum),
|
_ => self.webgl_error(InvalidEnum),
|
||||||
}
|
}
|
||||||
|
@ -597,7 +597,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
constants::POLYGON_OFFSET_FILL | constants::SAMPLE_ALPHA_TO_COVERAGE | constants::SAMPLE_COVERAGE |
|
constants::POLYGON_OFFSET_FILL | constants::SAMPLE_ALPHA_TO_COVERAGE | constants::SAMPLE_COVERAGE |
|
||||||
constants::SAMPLE_COVERAGE_INVERT | constants::SCISSOR_TEST =>
|
constants::SAMPLE_COVERAGE_INVERT | constants::SCISSOR_TEST =>
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Disable(cap)))
|
.send(CanvasMsg::WebGL(WebGLCommand::Disable(cap)))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
_ => self.webgl_error(InvalidEnum),
|
_ => self.webgl_error(InvalidEnum),
|
||||||
}
|
}
|
||||||
|
@ -699,7 +699,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
self.webgl_error(InvalidValue);
|
self.webgl_error(InvalidValue);
|
||||||
} else {
|
} else {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DrawArrays(mode, first, count)))
|
.send(CanvasMsg::WebGL(WebGLCommand::DrawArrays(mode, first, count)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
self.mark_as_dirty();
|
self.mark_as_dirty();
|
||||||
}
|
}
|
||||||
|
@ -739,7 +739,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
constants::TRIANGLE_STRIP | constants::TRIANGLE_FAN |
|
constants::TRIANGLE_STRIP | constants::TRIANGLE_FAN |
|
||||||
constants::TRIANGLES => {
|
constants::TRIANGLES => {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::DrawElements(mode, count, type_, offset)))
|
.send(CanvasMsg::WebGL(WebGLCommand::DrawElements(mode, count, type_, offset)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
self.mark_as_dirty();
|
self.mark_as_dirty();
|
||||||
},
|
},
|
||||||
|
@ -750,7 +750,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10
|
||||||
fn EnableVertexAttribArray(&self, attrib_id: u32) {
|
fn EnableVertexAttribArray(&self, attrib_id: u32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::EnableVertexAttribArray(attrib_id)))
|
.send(CanvasMsg::WebGL(WebGLCommand::EnableVertexAttribArray(attrib_id)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -825,7 +825,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Hint(target, mode)))
|
.send(CanvasMsg::WebGL(WebGLCommand::Hint(target, mode)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -836,7 +836,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::LineWidth(width)))
|
.send(CanvasMsg::WebGL(WebGLCommand::LineWidth(width)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -889,21 +889,21 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::PixelStorei(param_name, param_value)))
|
.send(CanvasMsg::WebGL(WebGLCommand::PixelStorei(param_name, param_value)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.3
|
||||||
fn PolygonOffset(&self, factor: f32, units: f32) {
|
fn PolygonOffset(&self, factor: f32, units: f32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::PolygonOffset(factor, units)))
|
.send(CanvasMsg::WebGL(WebGLCommand::PolygonOffset(factor, units)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.4
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.4
|
||||||
fn Scissor(&self, x: i32, y: i32, width: i32, height: i32) {
|
fn Scissor(&self, x: i32, y: i32, width: i32, height: i32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Scissor(x, y, width, height)))
|
.send(CanvasMsg::WebGL(WebGLCommand::Scissor(x, y, width, height)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -945,7 +945,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
};
|
};
|
||||||
|
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Uniform1f(uniform.id(), val)))
|
.send(CanvasMsg::WebGL(WebGLCommand::Uniform1f(uniform.id(), val)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -975,7 +975,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
};
|
};
|
||||||
|
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Uniform4f(uniform.id(), x, y, z, w)))
|
.send(CanvasMsg::WebGL(WebGLCommand::Uniform4f(uniform.id(), x, y, z, w)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1086,7 +1086,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
normalized: bool, stride: i32, offset: i64) {
|
normalized: bool, stride: i32, offset: i64) {
|
||||||
if let constants::FLOAT = data_type {
|
if let constants::FLOAT = data_type {
|
||||||
let msg = CanvasMsg::WebGL(
|
let msg = CanvasMsg::WebGL(
|
||||||
CanvasWebGLMsg::VertexAttribPointer2f(attrib_id, size, normalized, stride, offset as u32));
|
WebGLCommand::VertexAttribPointer2f(attrib_id, size, normalized, stride, offset as u32));
|
||||||
self.ipc_renderer.send(msg).unwrap()
|
self.ipc_renderer.send(msg).unwrap()
|
||||||
} else {
|
} else {
|
||||||
panic!("VertexAttribPointer: Data Type not supported")
|
panic!("VertexAttribPointer: Data Type not supported")
|
||||||
|
@ -1096,7 +1096,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.4
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.4
|
||||||
fn Viewport(&self, x: i32, y: i32, width: i32, height: i32) {
|
fn Viewport(&self, x: i32, y: i32, width: i32, height: i32) {
|
||||||
self.ipc_renderer
|
self.ipc_renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::Viewport(x, y, width, height)))
|
.send(CanvasMsg::WebGL(WebGLCommand::Viewport(x, y, width, height)))
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1170,7 +1170,7 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO(emilio): Invert axis, convert colorspace, premultiply alpha if requested
|
// TODO(emilio): Invert axis, convert colorspace, premultiply alpha if requested
|
||||||
let msg = CanvasWebGLMsg::TexImage2D(target, level, internal_format as i32,
|
let msg = WebGLCommand::TexImage2D(target, level, internal_format as i32,
|
||||||
size.width, size.height,
|
size.width, size.height,
|
||||||
format, data_type, pixels);
|
format, data_type, pixels);
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
||||||
use angle::hl::{BuiltInResources, Output, ShaderValidator};
|
use angle::hl::{BuiltInResources, Output, ShaderValidator};
|
||||||
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLResult, WebGLParameter};
|
use canvas_traits::CanvasMsg;
|
||||||
use dom::bindings::cell::DOMRefCell;
|
use dom::bindings::cell::DOMRefCell;
|
||||||
use dom::bindings::codegen::Bindings::WebGLShaderBinding;
|
use dom::bindings::codegen::Bindings::WebGLShaderBinding;
|
||||||
use dom::bindings::global::GlobalRef;
|
use dom::bindings::global::GlobalRef;
|
||||||
|
@ -15,6 +15,7 @@ use ipc_channel::ipc::{self, IpcSender};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
use std::sync::{ONCE_INIT, Once};
|
use std::sync::{ONCE_INIT, Once};
|
||||||
use util::str::DOMString;
|
use util::str::DOMString;
|
||||||
|
use webrender_traits::{WebGLCommand, WebGLParameter, WebGLResult};
|
||||||
|
|
||||||
#[derive(Clone, Copy, PartialEq, Debug, JSTraceable, HeapSizeOf)]
|
#[derive(Clone, Copy, PartialEq, Debug, JSTraceable, HeapSizeOf)]
|
||||||
pub enum ShaderCompilationStatus {
|
pub enum ShaderCompilationStatus {
|
||||||
|
@ -63,7 +64,7 @@ impl WebGLShader {
|
||||||
renderer: IpcSender<CanvasMsg>,
|
renderer: IpcSender<CanvasMsg>,
|
||||||
shader_type: u32) -> Option<Root<WebGLShader>> {
|
shader_type: u32) -> Option<Root<WebGLShader>> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateShader(shader_type, sender))).unwrap();
|
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateShader(shader_type, sender))).unwrap();
|
||||||
|
|
||||||
let result = receiver.recv().unwrap();
|
let result = receiver.recv().unwrap();
|
||||||
result.map(|shader_id| WebGLShader::new(global, renderer, *shader_id, shader_type))
|
result.map(|shader_id| WebGLShader::new(global, renderer, *shader_id, shader_type))
|
||||||
|
@ -103,7 +104,7 @@ impl WebGLShader {
|
||||||
// NOTE: At this point we should be pretty sure that the compilation in the paint thread
|
// NOTE: At this point we should be pretty sure that the compilation in the paint thread
|
||||||
// will succeed.
|
// will succeed.
|
||||||
// It could be interesting to retrieve the info log from the paint thread though
|
// It could be interesting to retrieve the info log from the paint thread though
|
||||||
let msg = CanvasWebGLMsg::CompileShader(self.id, translated_source);
|
let msg = WebGLCommand::CompileShader(self.id, translated_source);
|
||||||
self.renderer.send(CanvasMsg::WebGL(msg)).unwrap();
|
self.renderer.send(CanvasMsg::WebGL(msg)).unwrap();
|
||||||
self.compilation_status.set(ShaderCompilationStatus::Succeeded);
|
self.compilation_status.set(ShaderCompilationStatus::Succeeded);
|
||||||
},
|
},
|
||||||
|
@ -122,7 +123,7 @@ impl WebGLShader {
|
||||||
pub fn delete(&self) {
|
pub fn delete(&self) {
|
||||||
if !self.is_deleted.get() {
|
if !self.is_deleted.get() {
|
||||||
self.is_deleted.set(true);
|
self.is_deleted.set(true);
|
||||||
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteShader(self.id)));
|
let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteShader(self.id)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +135,7 @@ impl WebGLShader {
|
||||||
/// glGetParameter
|
/// glGetParameter
|
||||||
pub fn parameter(&self, param_id: u32) -> WebGLResult<WebGLParameter> {
|
pub fn parameter(&self, param_id: u32) -> WebGLResult<WebGLParameter> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::GetShaderParameter(self.id, param_id, sender))).unwrap();
|
self.renderer.send(CanvasMsg::WebGL(WebGLCommand::GetShaderParameter(self.id, param_id, sender))).unwrap();
|
||||||
receiver.recv().unwrap()
|
receiver.recv().unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
// https://www.khronos.org/registry/webgl/specs/latest/1.0/webgl.idl
|
||||||
use canvas_traits::{CanvasMsg, CanvasWebGLMsg, WebGLError, WebGLResult};
|
use canvas_traits::CanvasMsg;
|
||||||
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
|
use dom::bindings::codegen::Bindings::WebGLRenderingContextBinding::WebGLRenderingContextConstants as constants;
|
||||||
use dom::bindings::codegen::Bindings::WebGLTextureBinding;
|
use dom::bindings::codegen::Bindings::WebGLTextureBinding;
|
||||||
use dom::bindings::global::GlobalRef;
|
use dom::bindings::global::GlobalRef;
|
||||||
|
@ -12,6 +12,7 @@ use dom::bindings::reflector::reflect_dom_object;
|
||||||
use dom::webglobject::WebGLObject;
|
use dom::webglobject::WebGLObject;
|
||||||
use ipc_channel::ipc::{self, IpcSender};
|
use ipc_channel::ipc::{self, IpcSender};
|
||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
|
use webrender_traits::{WebGLCommand, WebGLError, WebGLResult};
|
||||||
|
|
||||||
pub enum TexParameterValue {
|
pub enum TexParameterValue {
|
||||||
Float(f32),
|
Float(f32),
|
||||||
|
@ -43,7 +44,7 @@ impl WebGLTexture {
|
||||||
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
|
pub fn maybe_new(global: GlobalRef, renderer: IpcSender<CanvasMsg>)
|
||||||
-> Option<Root<WebGLTexture>> {
|
-> Option<Root<WebGLTexture>> {
|
||||||
let (sender, receiver) = ipc::channel().unwrap();
|
let (sender, receiver) = ipc::channel().unwrap();
|
||||||
renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::CreateTexture(sender))).unwrap();
|
renderer.send(CanvasMsg::WebGL(WebGLCommand::CreateTexture(sender))).unwrap();
|
||||||
|
|
||||||
let result = receiver.recv().unwrap();
|
let result = receiver.recv().unwrap();
|
||||||
result.map(|texture_id| WebGLTexture::new(global, renderer, *texture_id))
|
result.map(|texture_id| WebGLTexture::new(global, renderer, *texture_id))
|
||||||
|
@ -70,7 +71,7 @@ impl WebGLTexture {
|
||||||
self.target.set(Some(target));
|
self.target.set(Some(target));
|
||||||
}
|
}
|
||||||
|
|
||||||
self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::BindTexture(target, self.id))).unwrap();
|
self.renderer.send(CanvasMsg::WebGL(WebGLCommand::BindTexture(target, self.id))).unwrap();
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -78,7 +79,7 @@ impl WebGLTexture {
|
||||||
pub fn delete(&self) {
|
pub fn delete(&self) {
|
||||||
if !self.is_deleted.get() {
|
if !self.is_deleted.get() {
|
||||||
self.is_deleted.set(true);
|
self.is_deleted.set(true);
|
||||||
let _ = self.renderer.send(CanvasMsg::WebGL(CanvasWebGLMsg::DeleteTexture(self.id)));
|
let _ = self.renderer.send(CanvasMsg::WebGL(WebGLCommand::DeleteTexture(self.id)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +105,7 @@ impl WebGLTexture {
|
||||||
constants::NEAREST_MIPMAP_LINEAR |
|
constants::NEAREST_MIPMAP_LINEAR |
|
||||||
constants::LINEAR_MIPMAP_LINEAR => {
|
constants::LINEAR_MIPMAP_LINEAR => {
|
||||||
self.renderer
|
self.renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::TexParameteri(target, name, int_value)))
|
.send(CanvasMsg::WebGL(WebGLCommand::TexParameteri(target, name, int_value)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
Ok(())
|
Ok(())
|
||||||
},
|
},
|
||||||
|
@ -117,7 +118,7 @@ impl WebGLTexture {
|
||||||
constants::NEAREST |
|
constants::NEAREST |
|
||||||
constants::LINEAR => {
|
constants::LINEAR => {
|
||||||
self.renderer
|
self.renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::TexParameteri(target, name, int_value)))
|
.send(CanvasMsg::WebGL(WebGLCommand::TexParameteri(target, name, int_value)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
Ok(())
|
Ok(())
|
||||||
},
|
},
|
||||||
|
@ -132,7 +133,7 @@ impl WebGLTexture {
|
||||||
constants::MIRRORED_REPEAT |
|
constants::MIRRORED_REPEAT |
|
||||||
constants::REPEAT => {
|
constants::REPEAT => {
|
||||||
self.renderer
|
self.renderer
|
||||||
.send(CanvasMsg::WebGL(CanvasWebGLMsg::TexParameteri(target, name, int_value)))
|
.send(CanvasMsg::WebGL(WebGLCommand::TexParameteri(target, name, int_value)))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
Ok(())
|
Ok(())
|
||||||
},
|
},
|
||||||
|
|
|
@ -76,6 +76,7 @@ extern crate url;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate util;
|
extern crate util;
|
||||||
extern crate uuid;
|
extern crate uuid;
|
||||||
|
extern crate webrender_traits;
|
||||||
extern crate websocket;
|
extern crate websocket;
|
||||||
extern crate xml5ever;
|
extern crate xml5ever;
|
||||||
|
|
||||||
|
|
|
@ -1746,6 +1746,7 @@ dependencies = [
|
||||||
"url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"util 0.0.1",
|
"util 0.0.1",
|
||||||
"uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
"uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
|
||||||
"websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
|
"xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
|
||||||
]
|
]
|
||||||
|
|
|
@ -1613,6 +1613,7 @@ dependencies = [
|
||||||
"url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"util 0.0.1",
|
"util 0.0.1",
|
||||||
"uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
"uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
|
||||||
"websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
|
"xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
|
||||||
]
|
]
|
||||||
|
|
|
@ -1595,6 +1595,7 @@ dependencies = [
|
||||||
"url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"util 0.0.1",
|
"util 0.0.1",
|
||||||
"uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
"uuid 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
|
"webrender_traits 0.1.0 (git+https://github.com/servo/webrender_traits)",
|
||||||
"websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"websocket 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
|
"xml5ever 0.1.1 (git+https://github.com/Ygg01/xml5ever)",
|
||||||
]
|
]
|
||||||
|
|
Загрузка…
Ссылка в новой задаче