diff --git a/gfx/webrender_bindings/src/bindings.rs b/gfx/webrender_bindings/src/bindings.rs index 733a7202be1f..8c57c2d2c471 100644 --- a/gfx/webrender_bindings/src/bindings.rs +++ b/gfx/webrender_bindings/src/bindings.rs @@ -2,6 +2,9 @@ * 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/. */ +#![allow(clippy::missing_safety_doc)] +#![allow(clippy::not_unsafe_ptr_arg_deref)] + use gleam::gl; use std::cell::RefCell; #[cfg(not(target_os = "macos"))] @@ -240,11 +243,11 @@ pub struct WrVecU8 { } impl WrVecU8 { - fn to_vec(self) -> Vec { + fn into_vec(self) -> Vec { unsafe { Vec::from_raw_parts(self.data, self.length, self.capacity) } } - // Equivalent to `to_vec` but clears self instead of consuming the value. + // Equivalent to `into_vec` but clears self instead of consuming the value. fn flush_into_vec(&mut self) -> Vec { self.convert_into_vec::() } @@ -299,7 +302,7 @@ pub extern "C" fn wr_vec_u8_reserve(v: &mut WrVecU8, len: usize) { #[no_mangle] pub extern "C" fn wr_vec_u8_free(v: WrVecU8) { - v.to_vec(); + v.into_vec(); } #[repr(C)] @@ -357,18 +360,18 @@ pub struct WrImageDescriptor { pub prefer_compositor_surface: bool, } -impl<'a> Into for &'a WrImageDescriptor { - fn into(self) -> ImageDescriptor { +impl<'a> From<&'a WrImageDescriptor> for ImageDescriptor { + fn from(desc: &'a WrImageDescriptor) -> ImageDescriptor { let mut flags = ImageDescriptorFlags::empty(); - if self.opacity == OpacityType::Opaque { + if desc.opacity == OpacityType::Opaque { flags |= ImageDescriptorFlags::IS_OPAQUE; } ImageDescriptor { - size: DeviceIntSize::new(self.width, self.height), - stride: if self.stride != 0 { Some(self.stride) } else { None }, - format: self.format, + size: DeviceIntSize::new(desc.width, desc.height), + stride: if desc.stride != 0 { Some(desc.stride) } else { None }, + format: desc.format, offset: 0, flags, } @@ -1173,10 +1176,7 @@ fn wr_device_new(gl_context: *mut c_void, pc: Option<&mut WrProgramCache>) -> De let use_optimized_shaders = unsafe { gfx_wr_use_optimized_shaders() }; - let cached_programs = match pc { - Some(cached_programs) => Some(Rc::clone(cached_programs.rc_get())), - None => None, - }; + let cached_programs = pc.map(|cached_programs| Rc::clone(cached_programs.rc_get())); Device::new( gl, @@ -1419,7 +1419,7 @@ impl MappableCompositor for WrCompositor { ); } - if tile_info.data != ptr::null_mut() && tile_info.stride != 0 { + if !tile_info.data.is_null() && tile_info.stride != 0 { Some(tile_info) } else { None @@ -1499,14 +1499,14 @@ pub extern "C" fn wr_window_new( ) -> bool { assert!(unsafe { is_in_render_thread() }); - let software = swgl_context != ptr::null_mut(); + let software = !swgl_context.is_null(); let (gl, sw_gl) = if software { let ctx = swgl::Context::from(swgl_context); ctx.make_current(); (Rc::new(ctx) as Rc, Some(ctx)) } else { let gl = unsafe { - if gl_context == ptr::null_mut() { + if gl_context.is_null() { panic!("Native GL context required when not using SWGL!"); } else if is_glcontext_gles(gl_context) { gl::GlesFns::load_with(|symbol| get_proc_address(gl_context, symbol)) @@ -1530,7 +1530,7 @@ pub extern "C" fn wr_window_new( } }; - let upload_method = if gl_context != ptr::null_mut() && unsafe { is_glcontext_angle(gl_context) } { + let upload_method = if !gl_context.is_null() && unsafe { is_glcontext_angle(gl_context) } { UploadMethod::Immediate } else { UploadMethod::PixelBuffer(ONE_TIME_USAGE_HINT) @@ -1542,10 +1542,7 @@ pub extern "C" fn wr_window_new( ShaderPrecacheFlags::empty() }; - let cached_programs = match program_cache { - Some(program_cache) => Some(Rc::clone(&program_cache.rc_get())), - None => None, - }; + let cached_programs = program_cache.map(|program_cache| Rc::clone(&program_cache.rc_get())); let color = if cfg!(target_os = "android") { // The color is for avoiding black flash before receiving display list. @@ -1684,7 +1681,7 @@ pub extern "C" fn wr_window_new( #[no_mangle] pub unsafe extern "C" fn wr_api_free_error_msg(msg: *mut c_char) { - if msg != ptr::null_mut() { + if !msg.is_null() { CString::from_raw(msg); } } @@ -2489,10 +2486,7 @@ pub extern "C" fn wr_dp_push_stacking_context( .collect(); let transform_ref = unsafe { transform.as_ref() }; - let mut transform_binding = match transform_ref { - Some(t) => Some(PropertyBinding::Value(*t)), - None => None, - }; + let mut transform_binding = transform_ref.map(|t| PropertyBinding::Value(*t)); let computed_ref = unsafe { params.computed_transform.as_ref() }; let opacity_ref = unsafe { params.opacity.as_ref() }; @@ -2519,7 +2513,7 @@ pub extern "C" fn wr_dp_push_stacking_context( transform_binding = Some(PropertyBinding::Binding( PropertyBindingKey::new(anim.id), // Same as above opacity case. - transform_ref.cloned().unwrap_or(LayoutTransform::identity()), + transform_ref.cloned().unwrap_or_else(LayoutTransform::identity), )); } _ => unreachable!("{:?} should not create a stacking context", anim.effect_type), diff --git a/gfx/webrender_bindings/src/moz2d_renderer.rs b/gfx/webrender_bindings/src/moz2d_renderer.rs index f7be60fdff51..32aae642a5ef 100644 --- a/gfx/webrender_bindings/src/moz2d_renderer.rs +++ b/gfx/webrender_bindings/src/moz2d_renderer.rs @@ -853,10 +853,10 @@ impl Moz2dBlobImageHandler { if !unsafe { HasFontData(instance.font_key) } { let template = resources.get_font_data(instance.font_key); match template { - &FontTemplate::Raw(ref data, ref index) => unsafe { + FontTemplate::Raw(ref data, ref index) => unsafe { AddFontData(instance.font_key, data.as_ptr(), data.len(), *index, data); }, - &FontTemplate::Native(ref handle) => { + FontTemplate::Native(ref handle) => { process_native_font_handle(instance.font_key, handle); } } diff --git a/gfx/webrender_bindings/src/program_cache.rs b/gfx/webrender_bindings/src/program_cache.rs index 8008603eb889..f4460f18120d 100644 --- a/gfx/webrender_bindings/src/program_cache.rs +++ b/gfx/webrender_bindings/src/program_cache.rs @@ -7,7 +7,7 @@ use std::ffi::OsString; use std::fs::{create_dir_all, read_dir, read_to_string, File}; use std::io::{Error, ErrorKind}; use std::io::{Read, Write}; -use std::path::PathBuf; +use std::path::{PathBuf, Path}; use std::rc::Rc; use std::sync::Arc; @@ -19,7 +19,7 @@ use webrender::{ProgramBinary, ProgramCache, ProgramCacheObserver, ProgramSource const MAX_LOAD_TIME_MS: u64 = 400; -fn deserialize_program_binary(path: &PathBuf) -> Result, Error> { +fn deserialize_program_binary(path: &Path) -> Result, Error> { let mut buf = vec![]; let mut file = File::open(path)?; file.read_to_end(&mut buf)?; diff --git a/gfx/webrender_bindings/src/swgl_bindings.rs b/gfx/webrender_bindings/src/swgl_bindings.rs index 2e0cb86c03b1..b1e7684a69f3 100644 --- a/gfx/webrender_bindings/src/swgl_bindings.rs +++ b/gfx/webrender_bindings/src/swgl_bindings.rs @@ -84,6 +84,7 @@ pub extern "C" fn wr_swgl_set_texture_buffer( } #[no_mangle] +#[allow(clippy::many_single_char_names)] pub extern "C" fn wr_swgl_clear_color_rect( ctx: *mut c_void, fbo: u32,