aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/canvas/webgl_thread.rs17
-rw-r--r--components/canvas_traits/webgl.rs2
-rw-r--r--components/script/dom/webglrenderingcontext.rs33
3 files changed, 23 insertions, 29 deletions
diff --git a/components/canvas/webgl_thread.rs b/components/canvas/webgl_thread.rs
index b0248fc4dfc..e27d85c4395 100644
--- a/components/canvas/webgl_thread.rs
+++ b/components/canvas/webgl_thread.rs
@@ -1156,21 +1156,8 @@ impl WebGLImpl {
fn shader_precision_format(gl: &gl::Gl,
shader_type: u32,
precision_type: u32,
- chan: WebGLSender<WebGLResult<(i32, i32, i32)>>) {
- let result = match precision_type {
- gl::LOW_FLOAT |
- gl::MEDIUM_FLOAT |
- gl::HIGH_FLOAT |
- gl::LOW_INT |
- gl::MEDIUM_INT |
- gl::HIGH_INT => {
- Ok(gl.get_shader_precision_format(shader_type, precision_type))
- },
- _=> {
- Err(WebGLError::InvalidEnum)
- }
- };
-
+ chan: WebGLSender<(i32, i32, i32)>) {
+ let result = gl.get_shader_precision_format(shader_type, precision_type);
chan.send(result).unwrap();
}
diff --git a/components/canvas_traits/webgl.rs b/components/canvas_traits/webgl.rs
index a54d614ee46..826003d2d92 100644
--- a/components/canvas_traits/webgl.rs
+++ b/components/canvas_traits/webgl.rs
@@ -210,7 +210,7 @@ pub enum WebGLCommand {
GetTexParameter(u32, u32, WebGLSender<i32>),
GetProgramParameter(WebGLProgramId, u32, WebGLSender<WebGLResult<WebGLParameter>>),
GetShaderParameter(WebGLShaderId, u32, WebGLSender<WebGLResult<WebGLParameter>>),
- GetShaderPrecisionFormat(u32, u32, WebGLSender<WebGLResult<(i32, i32, i32)>>),
+ GetShaderPrecisionFormat(u32, u32, WebGLSender<(i32, i32, i32)>),
GetActiveAttrib(WebGLProgramId, u32, WebGLSender<WebGLResult<(i32, u32, String)>>),
GetActiveUniform(WebGLProgramId, u32, WebGLSender<WebGLResult<(i32, u32, String)>>),
GetAttribLocation(WebGLProgramId, String, WebGLSender<Option<i32>>),
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index 799a1a20e46..64990da1504 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -2357,24 +2357,31 @@ impl WebGLRenderingContextMethods for WebGLRenderingContext {
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.9
- fn GetShaderPrecisionFormat(&self,
- shader_type: u32,
- precision_type: u32)
- -> Option<DomRoot<WebGLShaderPrecisionFormat>> {
+ fn GetShaderPrecisionFormat(
+ &self,
+ shader_type: u32,
+ precision_type: u32
+ ) -> Option<DomRoot<WebGLShaderPrecisionFormat>> {
+ match precision_type {
+ constants::LOW_FLOAT |
+ constants::MEDIUM_FLOAT |
+ constants::HIGH_FLOAT |
+ constants::LOW_INT |
+ constants::MEDIUM_INT |
+ constants::HIGH_INT => (),
+ _ => {
+ self.webgl_error(InvalidEnum);
+ return None;
+ },
+ }
+
let (sender, receiver) = webgl_channel().unwrap();
self.send_command(WebGLCommand::GetShaderPrecisionFormat(shader_type,
precision_type,
sender));
- match receiver.recv().unwrap() {
- Ok((range_min, range_max, precision)) => {
- Some(WebGLShaderPrecisionFormat::new(self.global().as_window(), range_min, range_max, precision))
- },
- Err(error) => {
- self.webgl_error(error);
- None
- }
- }
+ let (range_min, range_max, precision) = receiver.recv().unwrap();
+ Some(WebGLShaderPrecisionFormat::new(self.global().as_window(), range_min, range_max, precision))
}
// https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.14.10