From 5e72173e8cbb0006af6fffa0d8bceeda014d825d Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Thu, 12 Oct 2017 00:49:39 +0200 Subject: [PATCH] Use NonZeroU32 in canvas_traits --- Cargo.lock | 1 + components/canvas_traits/Cargo.toml | 4 ++++ components/canvas_traits/lib.rs | 5 +++-- components/canvas_traits/webgl.rs | 6 +++--- components/nonzero/lib.rs | 4 ++++ components/servo/Cargo.toml | 1 + 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8a99d247fc8..998660b30ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -326,6 +326,7 @@ dependencies = [ "heapsize_derive 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "ipc-channel 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "nonzero 0.0.1", "offscreen_gl_context 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.14 (registry+https://github.com/rust-lang/crates.io-index)", "servo_config 0.0.1", diff --git a/components/canvas_traits/Cargo.toml b/components/canvas_traits/Cargo.toml index 091c01dc630..d60efb69ad4 100644 --- a/components/canvas_traits/Cargo.toml +++ b/components/canvas_traits/Cargo.toml @@ -9,6 +9,9 @@ publish = false name = "canvas_traits" path = "lib.rs" +[features] +unstable = ["nonzero/unstable"] + [dependencies] cssparser = "0.22.0" euclid = "0.15" @@ -16,6 +19,7 @@ heapsize = "0.4" heapsize_derive = "0.1" ipc-channel = "0.8" lazy_static = "0.2" +nonzero = {path = "../nonzero"} offscreen_gl_context = { version = "0.11", features = ["serde"] } serde = "1.0" servo_config = {path = "../config"} diff --git a/components/canvas_traits/lib.rs b/components/canvas_traits/lib.rs index 7830d669e3e..8ca51a3ddde 100644 --- a/components/canvas_traits/lib.rs +++ b/components/canvas_traits/lib.rs @@ -4,17 +4,18 @@ #![crate_name = "canvas_traits"] #![crate_type = "rlib"] -#![feature(nonzero)] + +#![cfg_attr(feature = "unstable", feature(nonzero))] #![deny(unsafe_code)] -extern crate core; extern crate cssparser; extern crate euclid; extern crate heapsize; #[macro_use] extern crate heapsize_derive; extern crate ipc_channel; #[macro_use] extern crate lazy_static; +extern crate nonzero; extern crate offscreen_gl_context; #[macro_use] extern crate serde; extern crate servo_config; diff --git a/components/canvas_traits/webgl.rs b/components/canvas_traits/webgl.rs index 92a66013f4f..98c4115c69c 100644 --- a/components/canvas_traits/webgl.rs +++ b/components/canvas_traits/webgl.rs @@ -2,8 +2,8 @@ * 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/. */ -use core::nonzero::NonZero; use euclid::Size2D; +use nonzero::NonZeroU32; use offscreen_gl_context::{GLContextAttributes, GLLimits}; use std::fmt; use webrender_api; @@ -242,13 +242,13 @@ pub enum WebGLCommand { macro_rules! define_resource_id_struct { ($name:ident) => { #[derive(Clone, Copy, Eq, Hash, PartialEq)] - pub struct $name(NonZero); + pub struct $name(NonZeroU32); impl $name { #[allow(unsafe_code)] #[inline] pub unsafe fn new(id: u32) -> Self { - $name(NonZero::new_unchecked(id)) + $name(NonZeroU32::new_unchecked(id)) } #[inline] diff --git a/components/nonzero/lib.rs b/components/nonzero/lib.rs index 4ba341aee5f..efc6eca2f0a 100644 --- a/components/nonzero/lib.rs +++ b/components/nonzero/lib.rs @@ -39,6 +39,10 @@ mod imp { } } + pub unsafe fn new_unchecked(x: u32) -> Self { + NonZeroU32(x) + } + pub fn get(self) -> u32 { self.0 } diff --git a/components/servo/Cargo.toml b/components/servo/Cargo.toml index 55225482b46..d57f1cab270 100644 --- a/components/servo/Cargo.toml +++ b/components/servo/Cargo.toml @@ -22,6 +22,7 @@ unstable = [ "euclid/unstable", "layout_thread/unstable", "msg/unstable", + "canvas_traits/unstable", "compositing/unstable", "constellation/unstable", ]