From 0a0a0bb91d304de7f31031eb6238486b798c6584 Mon Sep 17 00:00:00 2001 From: Jamie Nicol Date: Wed, 27 Apr 2022 15:31:55 +0000 Subject: [PATCH] Bug 1615148 - Update wrench's winit and glutin dependencies. r=gw To versions 0.26 and 0.28 respectively. The most significant change is that winit's event loop has been overhauled. poll_events() has been removed, and you are strongly encouranged to use run() instead, which takes full control of the events loop. There does exist a run_return(), however, though we are advised against using it. We have chosen to do so for now anyway to make porting easier. I have attempted to match the existing semantics as closely as possible, though there may be slight differences. This patch additionally updates the version of rust used to build wrench on CI. Due to missing support in the 0.28 crates.io version of glutin, android wrench builds no longer work following this change. This will be rectified by the next patch in this series. Differential Revision: https://phabricator.services.mozilla.com/D144417 --- gfx/wr/Cargo.lock | 824 +++++++++++++++--------- gfx/wr/Cargo.toml | 8 - gfx/wr/examples/Cargo.toml | 4 +- gfx/wr/examples/alpha_perf.rs | 15 +- gfx/wr/examples/animation.rs | 24 +- gfx/wr/examples/common/boilerplate.rs | 80 +-- gfx/wr/examples/image_resize.rs | 16 +- gfx/wr/examples/multiwindow.rs | 73 +-- gfx/wr/examples/scrolling.rs | 35 +- gfx/wr/examples/texture_cache_stress.rs | 19 +- gfx/wr/examples/yuv.rs | 3 +- gfx/wr/servo-tidy.toml | 16 +- gfx/wr/wrench/Cargo.toml | 4 +- gfx/wr/wrench/src/angle.rs | 10 +- gfx/wr/wrench/src/main.rs | 394 ++++++----- gfx/wr/wrench/src/wrench.rs | 12 +- taskcluster/ci/toolchain/misc.yml | 6 - 17 files changed, 875 insertions(+), 668 deletions(-) diff --git a/gfx/wr/Cargo.lock b/gfx/wr/Cargo.lock index cfcc353ee378..229bd6376997 100644 --- a/gfx/wr/Cargo.lock +++ b/gfx/wr/Cargo.lock @@ -23,24 +23,11 @@ dependencies = [ "memchr", ] -[[package]] -name = "andrew" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7f09f89872c2b6b29e319377b1fbe91c6f5947df19a25596e121cf19a7b35e" -dependencies = [ - "bitflags", - "line_drawing", - "rusttype 0.7.9", - "walkdir", - "xdg", - "xml-rs", -] - [[package]] name = "android_glue" version = "0.2.3" -source = "git+https://github.com/rust-windowing/android-rs-glue.git?rev=e3ac6edea5814e1faca0c31ea8fac6877cb929ea#e3ac6edea5814e1faca0c31ea8fac6877cb929ea" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407" [[package]] name = "ansi_term" @@ -61,15 +48,6 @@ dependencies = [ "serde", ] -[[package]] -name = "approx" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0e60b75072ecd4168020818c0107f2857bb6c4e64252d8d3983f6263b40a5c3" -dependencies = [ - "num-traits", -] - [[package]] name = "arrayref" version = "0.3.6" @@ -89,31 +67,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" - -[[package]] -name = "backtrace" -version = "0.3.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e692897359247cc6bb902933361652380af0f1b7651ae5c5013407f30e109e" -dependencies = [ - "backtrace-sys", - "cfg-if 0.1.10", - "libc", - "rustc-demangle", -] - -[[package]] -name = "backtrace-sys" -version = "0.1.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8aba10a69c8e8d7622c5710229485ec32e9d55fdad160ea559c086fdcd118" -dependencies = [ - "cc", - "libc", -] +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" @@ -160,6 +116,12 @@ dependencies = [ "num_cpus", ] +[[package]] +name = "bumpalo" +version = "3.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" + [[package]] name = "bytemuck" version = "1.2.0" @@ -172,6 +134,16 @@ version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" +[[package]] +name = "calloop" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf2eec61efe56aa1e813f5126959296933cf0700030e4314786c48779a66ab82" +dependencies = [ + "log", + "nix", +] + [[package]] name = "cc" version = "1.0.50" @@ -195,11 +167,10 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cgl" -version = "0.2.3" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e7ec0b74fe5897894cbc207092c577e87c52f8a59e8ca8d97ef37551f60a49" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" dependencies = [ - "gleam 0.6.19", "libc", ] @@ -226,22 +197,13 @@ dependencies = [ "ansi_term", "atty", "bitflags", - "strsim", + "strsim 0.8.0", "textwrap", "unicode-width", "vec_map", "yaml-rust 0.3.5", ] -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", -] - [[package]] name = "cmake" version = "0.1.42" @@ -253,14 +215,30 @@ dependencies = [ [[package]] name = "cocoa" -version = "0.18.5" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1706996401131526e36b3b49f0c4d912639ce110996f3ca144d78946727bce54" +checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" dependencies = [ "bitflags", "block", - "core-foundation 0.6.4", - "core-graphics 0.17.3", + "cocoa-foundation", + "core-foundation 0.9.2", + "core-graphics 0.22.3", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +dependencies = [ + "bitflags", + "block", + "core-foundation 0.9.2", + "core-graphics-types", "foreign-types", "libc", "objc", @@ -272,7 +250,7 @@ version = "0.1.0" dependencies = [ "compositor-wayland", "compositor-windows", - "gleam 0.13.1", + "gleam", "webrender", ] @@ -297,16 +275,6 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd51eab21ab4fd6a3bf889e2d0958c0a6e3a61ad04260325e919e652a2a62826" -[[package]] -name = "core-foundation" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" -dependencies = [ - "core-foundation-sys 0.6.2", - "libc", -] - [[package]] name = "core-foundation" version = "0.7.0" @@ -327,12 +295,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core-foundation-sys" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" - [[package]] name = "core-foundation-sys" version = "0.7.0" @@ -347,12 +309,12 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "core-graphics" -version = "0.17.3" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56790968ab1c8a1202a102e6de05fc6e1ec87da99e4e93e9a7d13efbfc1e95a9" +checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" dependencies = [ "bitflags", - "core-foundation 0.6.4", + "core-foundation 0.7.0", "foreign-types", "libc", ] @@ -394,6 +356,19 @@ dependencies = [ "libc", ] +[[package]] +name = "core-video-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" +dependencies = [ + "cfg-if 0.1.10", + "core-foundation-sys 0.7.0", + "core-graphics 0.19.2", + "libc", + "objc", +] + [[package]] name = "crc32fast" version = "1.2.0" @@ -455,6 +430,47 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "cty" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" + +[[package]] +name = "darling" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" +dependencies = [ + "darling_core", + "quote", + "syn", +] + [[package]] name = "deflate" version = "0.8.4" @@ -471,16 +487,22 @@ version = "0.99.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2323f3f47db9a0e77ce7a300605d8d2098597fc451ed1a97bb1f6411bb550a7" dependencies = [ - "proc-macro2 1.0.36", - "quote 1.0.3", + "proc-macro2", + "quote", "syn", ] [[package]] -name = "dlib" -version = "0.4.1" +name = "dispatch" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e51249a9d823a4cb79e3eca6dcd756153e8ed0157b6c04775d04bf1b13b76a" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlib" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" dependencies = [ "libloading", ] @@ -577,6 +599,12 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "fog" version = "0.1.0" @@ -663,7 +691,7 @@ checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" dependencies = [ "cfg-if 1.0.0", "libc", - "wasi", + "wasi 0.10.0+wasi-snapshot-preview1", ] [[package]] @@ -688,15 +716,6 @@ dependencies = [ "xml-rs", ] -[[package]] -name = "gleam" -version = "0.6.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae10d7c99d0e77b4766e850a60898a17c1abaf01075531f1066f03dc7dc5fc5" -dependencies = [ - "gl_generator 0.13.1", -] - [[package]] name = "gleam" version = "0.13.1" @@ -752,7 +771,7 @@ version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "766443890761b3c4edcce86cafaac97971b200662fbdd0446eb7c6b99b4401ea" dependencies = [ - "nom", + "nom 5.1.1", ] [[package]] @@ -773,15 +792,14 @@ dependencies = [ [[package]] name = "glutin" -version = "0.21.2" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5371b35b309dace06be1b81b5f6adb1c9de578b7dbe1e74bf7e4ef762cf6febd" +checksum = "00ea9dbe544bc8a657c4c4a798c2d16cd01b549820e47657297549d28371f6d2" dependencies = [ "android_glue", "cgl", "cocoa", - "core-foundation 0.6.4", - "core-graphics 0.17.3", + "core-foundation 0.9.2", "glutin_egl_sys", "glutin_emscripten_sys", "glutin_gles2_sys", @@ -789,21 +807,23 @@ dependencies = [ "glutin_wgl_sys", "lazy_static", "libloading", + "log", "objc", "osmesa-sys", "parking_lot", "wayland-client", + "wayland-egl", "winapi", "winit", ] [[package]] name = "glutin_egl_sys" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772edef3b28b8ad41e4ea202748e65eefe8e5ffd1f4535f1219793dbb20b3d4c" +checksum = "2abb6aa55523480c4adc5a56bbaa249992e2dddb2fc63dc96e04a3355364c211" dependencies = [ - "gl_generator 0.13.1", + "gl_generator 0.14.0", "winapi", ] @@ -815,31 +835,31 @@ checksum = "80de4146df76e8a6c32b03007bc764ff3249dcaeb4f675d68a06caf1bac363f1" [[package]] name = "glutin_gles2_sys" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e853d96bebcb8e53e445225c3009758c6f5960d44f2543245f6f07b567dae0" +checksum = "e8094e708b730a7c8a1954f4f8a31880af00eb8a1c5b5bf85d28a0a3c6d69103" dependencies = [ - "gl_generator 0.13.1", + "gl_generator 0.14.0", "objc", ] [[package]] name = "glutin_glx_sys" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c243de74d6cf5ea100c788826d2fb9319de315485dd4b310811a663b3809c3" +checksum = "7e393c8fc02b807459410429150e9c4faffdb312d59b8c038566173c81991351" dependencies = [ - "gl_generator 0.13.1", + "gl_generator 0.14.0", "x11-dl", ] [[package]] name = "glutin_wgl_sys" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a93dba7ee3a0feeac0f437141ff25e71ce2066bcf1a706acab1559ffff94eb6a" +checksum = "3da5951a1569dbab865c6f2a863efafff193a93caf05538d193e9e3816d21696" dependencies = [ - "gl_generator 0.13.1", + "gl_generator 0.14.0", ] [[package]] @@ -866,6 +886,12 @@ version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" version = "0.2.3" @@ -906,17 +932,35 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3974bf42c2050bbf0696471e4d91ecc9844845c2323b388aa7bf9d63f3b0693" dependencies = [ - "proc-macro2 1.0.36", - "quote 1.0.3", + "proc-macro2", + "quote", "syn", ] +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "itoa" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + [[package]] name = "jobserver" version = "0.1.21" @@ -926,6 +970,15 @@ dependencies = [ "libc", ] +[[package]] +name = "js-sys" +version = "0.3.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" +dependencies = [ + "wasm-bindgen", +] + [[package]] name = "khronos_api" version = "3.1.0" @@ -946,23 +999,14 @@ checksum = "ec647867e2bf0772e28c8bcde4f0d19a9216916e890543b5a03ed8ef27b8f259" [[package]] name = "libloading" -version = "0.5.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" dependencies = [ - "cc", + "cfg-if 1.0.0", "winapi", ] -[[package]] -name = "line_drawing" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc7ad3d82c845bdb5dde34ffdcc7a5fb4d2996e1e1ee0f19c33bc80e15196b9" -dependencies = [ - "num-traits", -] - [[package]] name = "linked-hash-map" version = "0.5.3" @@ -994,20 +1038,21 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.3.4" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" dependencies = [ + "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.8" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" +checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", ] [[package]] @@ -1025,7 +1070,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e37c5d4cd9473c5f4c9c111f033f15d4df9bd378fdf615944e360a4f55a05f0b" dependencies = [ - "proc-macro2 1.0.36", + "proc-macro2", "syn", "synstructure", ] @@ -1049,20 +1094,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" [[package]] -name = "memmap" -version = "0.7.0" +name = "memmap2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357" dependencies = [ "libc", - "winapi", ] [[package]] name = "memoffset" -version = "0.6.1" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ "autocfg", ] @@ -1073,6 +1117,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "647da2489d438eb707e9bcffe0e47fb6f3f355ed288120740fc1e614cfadb9e9" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.5.1" @@ -1082,6 +1132,29 @@ dependencies = [ "adler", ] +[[package]] +name = "mio" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" +dependencies = [ + "libc", + "log", + "miow", + "ntapi", + "wasi 0.11.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", +] + [[package]] name = "mozangle" version = "0.3.3" @@ -1095,16 +1168,69 @@ dependencies = [ ] [[package]] -name = "nix" -version = "0.14.1" +name = "ndk" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c722bee1037d430d0f8e687bbdbf222f27cc6e4e68d5caf630857bb2b6dbdce" +checksum = "96d868f654c72e75f8687572699cdabe755f03effbb62542768e995d5b8d699d" +dependencies = [ + "bitflags", + "jni-sys", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-glue" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71bee8ea72d685477e28bd004cfe1bf99c754d688cd78cad139eae4089484d4" +dependencies = [ + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-macro", + "ndk-sys", +] + +[[package]] +name = "ndk-macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" +dependencies = [ + "darling", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "ndk-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" + +[[package]] +name = "nix" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" dependencies = [ "bitflags", "cc", - "cfg-if 0.1.10", + "cfg-if 1.0.0", "libc", - "void", + "memoffset", ] [[package]] @@ -1117,6 +1243,25 @@ dependencies = [ "version_check", ] +[[package]] +name = "nom" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "ntapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +dependencies = [ + "winapi", +] + [[package]] name = "num-integer" version = "0.1.42" @@ -1168,6 +1313,27 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "objc" version = "0.2.7" @@ -1208,27 +1374,26 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.9.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ + "instant", "lock_api", "parking_lot_core", - "rustc_version", ] [[package]] name = "parking_lot_core" -version = "0.6.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" dependencies = [ - "cfg-if 0.1.10", - "cloudabi", + "cfg-if 1.0.0", + "instant", "libc", "redox_syscall", - "rustc_version", - "smallvec 0.6.13", + "smallvec", "winapi", ] @@ -1263,11 +1428,11 @@ dependencies = [ name = "peek-poke-derive" version = "0.2.1" dependencies = [ - "proc-macro2 1.0.36", - "quote 1.0.3", + "proc-macro2", + "quote", "syn", "synstructure", - "unicode-xid 0.2.0", + "unicode-xid", ] [[package]] @@ -1306,28 +1471,29 @@ dependencies = [ "inflate", ] +[[package]] +name = "proc-macro-crate" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +dependencies = [ + "thiserror", + "toml", +] + [[package]] name = "proc-macro-hack" version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] - [[package]] name = "proc-macro2" version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ - "unicode-xid 0.2.0", + "unicode-xid", ] [[package]] @@ -1338,20 +1504,11 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "0.6.13" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" dependencies = [ - "proc-macro2 0.4.30", -] - -[[package]] -name = "quote" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f" -dependencies = [ - "proc-macro2 1.0.36", + "proc-macro2", ] [[package]] @@ -1384,11 +1541,11 @@ checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" [[package]] name = "raw-window-handle" -version = "0.3.3" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a441a7a6c80ad6473bd4b74ec1c9a4c951794285bf941c2126f607c72e48211" +checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" dependencies = [ - "libc", + "cty", ] [[package]] @@ -1427,9 +1584,12 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.1.56" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" +checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" +dependencies = [ + "bitflags", +] [[package]] name = "regex" @@ -1483,41 +1643,6 @@ dependencies = [ "serde", ] -[[package]] -name = "rustc-demangle" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" - -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver", -] - -[[package]] -name = "rusttype" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310942406a39981bed7e12b09182a221a29e0990f3e7e0c971f131922ed135d5" -dependencies = [ - "rusttype 0.8.3", -] - -[[package]] -name = "rusttype" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f61411055101f7b60ecf1041d87fb74205fb20b0c7a723f07ef39174cf6b4c0" -dependencies = [ - "approx", - "ordered-float", - "stb_truetype", -] - [[package]] name = "ryu" version = "1.0.3" @@ -1533,6 +1658,12 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + [[package]] name = "scopeguard" version = "1.1.0" @@ -1578,8 +1709,8 @@ version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e549e3abf4fb8621bd1609f11dfc9f5e50320802273b12f3811a67e6716ea6c" dependencies = [ - "proc-macro2 1.0.36", - "quote 1.0.3", + "proc-macro2", + "quote", "syn", ] @@ -1627,54 +1758,44 @@ dependencies = [ [[package]] name = "smallvec" -version = "0.6.13" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" -dependencies = [ - "maybe-uninit", -] - -[[package]] -name = "smallvec" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05720e22615919e4734f6a99ceae50d00226c3c5aca406e102ebc33298214e0a" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" dependencies = [ "serde", ] [[package]] name = "smithay-client-toolkit" -version = "0.4.6" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ccb8c57049b2a34d2cc2b203fa785020ba0129d31920ef0d317430adaf748fa" +checksum = "8a28f16a97fa0e8ce563b2774d1e732dd5d4025d2772c5dba0a41a0f90a29da3" dependencies = [ - "andrew", "bitflags", + "calloop", "dlib", "lazy_static", - "memmap", + "log", + "memmap2", "nix", + "pkg-config", "wayland-client", - "wayland-commons", + "wayland-cursor", "wayland-protocols", ] -[[package]] -name = "stb_truetype" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f77b6b07e862c66a9f3e62a07588fee67cd90a9135a2b942409f195507b4fb51" -dependencies = [ - "byteorder", -] - [[package]] name = "strsim" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "svg_fmt" version = "0.4.1" @@ -1686,7 +1807,7 @@ name = "swgl" version = "0.1.0" dependencies = [ "cc", - "gleam 0.13.1", + "gleam", "glsl-to-cxx", "webrender_build", ] @@ -1697,9 +1818,9 @@ version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" dependencies = [ - "proc-macro2 1.0.36", - "quote 1.0.3", - "unicode-xid 0.2.0", + "proc-macro2", + "quote", + "unicode-xid", ] [[package]] @@ -1708,10 +1829,10 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545" dependencies = [ - "proc-macro2 1.0.36", - "quote 1.0.3", + "proc-macro2", + "quote", "syn", - "unicode-xid 0.2.0", + "unicode-xid", ] [[package]] @@ -1747,8 +1868,8 @@ version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ - "proc-macro2 1.0.36", - "quote 1.0.3", + "proc-macro2", + "quote", "syn", ] @@ -1768,7 +1889,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", - "wasi", + "wasi 0.10.0+wasi-snapshot-preview1", "winapi", ] @@ -1787,6 +1908,15 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + [[package]] name = "topological-sort" version = "0.1.0" @@ -1823,12 +1953,6 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - [[package]] name = "unicode-xid" version = "0.2.0" @@ -1868,12 +1992,6 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "walkdir" version = "2.3.1" @@ -1892,15 +2010,76 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] -name = "wayland-client" -version = "0.21.13" +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49963e5f9eeaf637bfcd1b9f0701c99fd5cd05225eb51035550d4272806f2713" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" + +[[package]] +name = "wayland-client" +version = "0.29.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91223460e73257f697d9e23d401279123d36039a3f7a449e983f123292d4458f" dependencies = [ "bitflags", "downcast-rs", "libc", "nix", + "scoped-tls", "wayland-commons", "wayland-scanner", "wayland-sys", @@ -1908,46 +2087,79 @@ dependencies = [ [[package]] name = "wayland-commons" -version = "0.21.13" +version = "0.29.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40c08896768b667e1df195d88a62a53a2d1351a1ed96188be79c196b35bb32ec" +checksum = "94f6e5e340d7c13490eca867898c4cec5af56c27a5ffe5c80c6fc4708e22d33e" dependencies = [ "nix", + "once_cell", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-cursor" +version = "0.29.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c52758f13d5e7861fc83d942d3d99bf270c83269575e52ac29e5b73cb956a6bd" +dependencies = [ + "nix", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-egl" +version = "0.29.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83281d69ee162b59031c666385e93bde4039ec553b90c4191cdb128ceea29a3a" +dependencies = [ + "wayland-client", "wayland-sys", ] [[package]] name = "wayland-protocols" -version = "0.21.13" +version = "0.29.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4afde2ea2a428eee6d7d2c8584fdbe8b82eee8b6c353e129a434cd6e07f42145" +checksum = "60147ae23303402e41fe034f74fb2c35ad0780ee88a1c40ac09a3be1e7465741" dependencies = [ "bitflags", "wayland-client", "wayland-commons", "wayland-scanner", - "wayland-sys", ] [[package]] name = "wayland-scanner" -version = "0.21.13" +version = "0.29.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf3828c568714507315ee425a9529edc4a4aa9901409e373e9e0027e7622b79e" +checksum = "39a1ed3143f7a143187156a2ab52742e89dac33245ba505c17224df48939f9e0" dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", + "proc-macro2", + "quote", "xml-rs", ] [[package]] name = "wayland-sys" -version = "0.21.13" +version = "0.29.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520ab0fd578017a0ee2206623ba9ef4afe5e8f23ca7b42f6acfba2f4e66b1628" +checksum = "d9341df79a8975679188e37dab3889bfa57c44ac2cb6da166f519a81cbe452d4" dependencies = [ "dlib", "lazy_static", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" +dependencies = [ + "js-sys", + "wasm-bindgen", ] [[package]] @@ -1968,7 +2180,7 @@ dependencies = [ "fog", "freetype", "fxhash", - "gleam 0.13.1", + "gleam", "glean", "glslopt", "lazy_static", @@ -1984,7 +2196,7 @@ dependencies = [ "rayon", "ron", "serde", - "smallvec 1.3.0", + "smallvec", "svg_fmt", "swgl", "time", @@ -2003,7 +2215,7 @@ dependencies = [ "core-foundation 0.7.0", "env_logger", "euclid", - "gleam 0.13.1", + "gleam", "glutin", "rayon", "webrender", @@ -2051,9 +2263,9 @@ dependencies = [ [[package]] name = "winapi" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" dependencies = [ "winapi-i686-pc-windows-gnu", "winapi-x86_64-pc-windows-gnu", @@ -2082,24 +2294,33 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winit" -version = "0.19.5" -source = "git+https://github.com/jrmuizel/winit?branch=wr#947af776e1a3ab47000b893068b4d0750861bdb0" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b43cc931d58b99461188607efd7acb2a093e65fc621f54cad78517a6063e73a" dependencies = [ - "android_glue", - "backtrace", "bitflags", "cocoa", - "core-foundation 0.6.4", - "core-graphics 0.17.3", + "core-foundation 0.9.2", + "core-graphics 0.22.3", + "core-video-sys", + "dispatch", + "instant", "lazy_static", "libc", "log", + "mio", + "ndk", + "ndk-glue", + "ndk-sys", "objc", "parking_lot", "percent-encoding", "raw-window-handle", "smithay-client-toolkit", + "wasm-bindgen", "wayland-client", + "wayland-protocols", + "web-sys", "winapi", "x11-dl", ] @@ -2134,7 +2355,7 @@ dependencies = [ "dwrote", "env_logger", "font-loader", - "gleam 0.13.1", + "gleam", "glsl", "glutin", "image", @@ -2166,10 +2387,13 @@ dependencies = [ ] [[package]] -name = "xdg" -version = "2.2.0" +name = "xcursor" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d089681aa106a86fade1b0128fb5daf07d5867a509ab036d99988dec80429a57" +checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" +dependencies = [ + "nom 7.1.1", +] [[package]] name = "xml-rs" diff --git a/gfx/wr/Cargo.toml b/gfx/wr/Cargo.toml index 475cb53f170c..1b7924fdb254 100644 --- a/gfx/wr/Cargo.toml +++ b/gfx/wr/Cargo.toml @@ -21,13 +21,5 @@ opt-level = 2 [profile.release.package.glsl] opt-level = 2 -# Running wrench on android built with master cargo-apk results in a crash -# due to a mismatched version of android_glue (a dependency of winit). -# Override it to use a suitable version of android_glue. -# See https://github.com/rust-windowing/android-rs-glue/issues/239. -# This can be removed once a new version of android_glue is published to crates.io. [patch.crates-io] -android_glue = { git = "https://github.com/rust-windowing/android-rs-glue.git", rev = "e3ac6edea5814e1faca0c31ea8fac6877cb929ea" } -# this is a version that fixes some incompatibilites with newer rust/aarch64 -winit = { version = "0.19", git = "https://github.com/jrmuizel/winit", branch="wr" } fog = { path = "fog" } diff --git a/gfx/wr/examples/Cargo.toml b/gfx/wr/examples/Cargo.toml index 556b67d1ed5d..3deec38057f6 100644 --- a/gfx/wr/examples/Cargo.toml +++ b/gfx/wr/examples/Cargo.toml @@ -58,10 +58,10 @@ app_units = "0.7" env_logger = "0.5" euclid = "0.22" gleam = "0.13" -glutin = "0.21" +glutin = "0.28" rayon = "1" webrender = { path = "../webrender" } -winit = "0.19" +winit = "0.26" [target.'cfg(target_os = "macos")'.dependencies] core-foundation = "0.7" diff --git a/gfx/wr/examples/alpha_perf.rs b/gfx/wr/examples/alpha_perf.rs index 96a173dffd3c..76cfa40c13fc 100644 --- a/gfx/wr/examples/alpha_perf.rs +++ b/gfx/wr/examples/alpha_perf.rs @@ -54,25 +54,26 @@ impl Example for App { fn on_event( &mut self, - event: winit::WindowEvent, + event: winit::event::WindowEvent, + _window: &winit::window::Window, _api: &mut RenderApi, - _document_id: DocumentId + _document_id: DocumentId, ) -> bool { match event { - winit::WindowEvent::KeyboardInput { - input: winit::KeyboardInput { - state: winit::ElementState::Pressed, + winit::event::WindowEvent::KeyboardInput { + input: winit::event::KeyboardInput { + state: winit::event::ElementState::Pressed, virtual_keycode: Some(key), .. }, .. } => { match key { - winit::VirtualKeyCode::Right => { + winit::event::VirtualKeyCode::Right => { self.rect_count += 1; println!("rects = {}", self.rect_count); } - winit::VirtualKeyCode::Left => { + winit::event::VirtualKeyCode::Left => { self.rect_count = cmp::max(self.rect_count, 1) - 1; println!("rects = {}", self.rect_count); } diff --git a/gfx/wr/examples/animation.rs b/gfx/wr/examples/animation.rs index 01bb4c0e3692..9df22e62c14f 100644 --- a/gfx/wr/examples/animation.rs +++ b/gfx/wr/examples/animation.rs @@ -141,24 +141,30 @@ impl Example for App { self.add_rounded_rect(bounds, ColorF::new(0.0, 0.0, 1.0, 0.5), builder, pipeline_id, key2, None); } - fn on_event(&mut self, win_event: winit::WindowEvent, api: &mut RenderApi, document_id: DocumentId) -> bool { + fn on_event( + &mut self, + win_event: winit::event::WindowEvent, + _window: &winit::window::Window, + api: &mut RenderApi, + document_id: DocumentId + ) -> bool { let mut rebuild_display_list = false; match win_event { - winit::WindowEvent::KeyboardInput { - input: winit::KeyboardInput { - state: winit::ElementState::Pressed, + winit::event::WindowEvent::KeyboardInput { + input: winit::event::KeyboardInput { + state: winit::event::ElementState::Pressed, virtual_keycode: Some(key), .. }, .. } => { let (delta_angle, delta_opacity) = match key { - winit::VirtualKeyCode::Down => (0.0, -0.1), - winit::VirtualKeyCode::Up => (0.0, 0.1), - winit::VirtualKeyCode::Right => (1.0, 0.0), - winit::VirtualKeyCode::Left => (-1.0, 0.0), - winit::VirtualKeyCode::R => { + winit::event::VirtualKeyCode::Down => (0.0, -0.1), + winit::event::VirtualKeyCode::Up => (0.0, 0.1), + winit::event::VirtualKeyCode::Right => (1.0, 0.0), + winit::event::VirtualKeyCode::Left => (-1.0, 0.0), + winit::event::VirtualKeyCode::R => { rebuild_display_list = true; (0.0, 0.0) } diff --git a/gfx/wr/examples/common/boilerplate.rs b/gfx/wr/examples/common/boilerplate.rs index 38f5f78db061..3d3a4ead7b29 100644 --- a/gfx/wr/examples/common/boilerplate.rs +++ b/gfx/wr/examples/common/boilerplate.rs @@ -8,17 +8,18 @@ use std::env; use std::path::PathBuf; use webrender; use winit; +use winit::platform::run_return::EventLoopExtRunReturn; use webrender::{DebugFlags, ShaderPrecacheFlags}; use webrender::api::*; use webrender::render_api::*; use webrender::api::units::*; struct Notifier { - events_proxy: winit::EventsLoopProxy, + events_proxy: winit::event_loop::EventLoopProxy<()>, } impl Notifier { - fn new(events_proxy: winit::EventsLoopProxy) -> Notifier { + fn new(events_proxy: winit::event_loop::EventLoopProxy<()>) -> Notifier { Notifier { events_proxy } } } @@ -32,7 +33,7 @@ impl RenderNotifier for Notifier { fn wake_up(&self, _composite_needed: bool) { #[cfg(not(target_os = "android"))] - let _ = self.events_proxy.wakeup(); + let _ = self.events_proxy.send_event(()); } fn new_frame_ready(&self, @@ -83,7 +84,8 @@ pub trait Example { ); fn on_event( &mut self, - _: winit::WindowEvent, + _: winit::event::WindowEvent, + _: &winit::window::Window, _: &mut RenderApi, _: DocumentId, ) -> bool { @@ -123,11 +125,10 @@ pub fn main_wrapper( None }; - let mut events_loop = winit::EventsLoop::new(); - let window_builder = winit::WindowBuilder::new() + let mut events_loop = winit::event_loop::EventLoop::new(); + let window_builder = winit::window::WindowBuilder::new() .with_title(E::TITLE) - .with_multitouch() - .with_dimensions(winit::dpi::LogicalSize::new(E::WIDTH as f64, E::HEIGHT as f64)); + .with_inner_size(winit::dpi::LogicalSize::new(E::WIDTH as f64, E::HEIGHT as f64)); let windowed_context = glutin::ContextBuilder::new() .with_gl(glutin::GlRequest::GlThenGles { opengl_version: (3, 2), @@ -154,7 +155,7 @@ pub fn main_wrapper( println!("OpenGL version {}", gl.get_string(gl::VERSION)); println!("Shader resource path: {:?}", res_path); - let device_pixel_ratio = windowed_context.window().get_hidpi_factor() as f32; + let device_pixel_ratio = windowed_context.window().scale_factor() as f32; println!("Device pixel ratio: {}", device_pixel_ratio); println!("Loading shaders..."); @@ -171,9 +172,7 @@ pub fn main_wrapper( let device_size = { let size = windowed_context .window() - .get_inner_size() - .unwrap() - .to_physical(device_pixel_ratio as f64); + .inner_size(); DeviceIntSize::new(size.width as i32, size.height as i32) }; let notifier = Box::new(Notifier::new(events_loop.create_proxy())); @@ -218,48 +217,55 @@ pub fn main_wrapper( api.send_transaction(document_id, txn); println!("Entering event loop"); - events_loop.run_forever(|global_event| { + events_loop.run_return(|global_event, _elwt, control_flow| { let mut txn = Transaction::new(); let mut custom_event = true; let old_flags = debug_flags; let win_event = match global_event { - winit::Event::WindowEvent { event, .. } => event, - _ => return winit::ControlFlow::Continue, + winit::event::Event::WindowEvent { event, .. } => event, + _ => return, }; match win_event { - winit::WindowEvent::CloseRequested => return winit::ControlFlow::Break, - winit::WindowEvent::AxisMotion { .. } | - winit::WindowEvent::CursorMoved { .. } => { + winit::event::WindowEvent::CloseRequested => { + *control_flow = winit::event_loop::ControlFlow::Exit; + return; + } + winit::event::WindowEvent::AxisMotion { .. } | + winit::event::WindowEvent::CursorMoved { .. } => { custom_event = example.on_event( - win_event, - &mut api, - document_id, - ); + win_event, + windowed_context.window(), + &mut api, + document_id, + ); // skip high-frequency events from triggering a frame draw. if !custom_event { - return winit::ControlFlow::Continue; + return; } }, - winit::WindowEvent::KeyboardInput { - input: winit::KeyboardInput { - state: winit::ElementState::Pressed, + winit::event::WindowEvent::KeyboardInput { + input: winit::event::KeyboardInput { + state: winit::event::ElementState::Pressed, virtual_keycode: Some(key), .. }, .. } => match key { - winit::VirtualKeyCode::Escape => return winit::ControlFlow::Break, - winit::VirtualKeyCode::P => debug_flags.toggle(DebugFlags::PROFILER_DBG), - winit::VirtualKeyCode::O => debug_flags.toggle(DebugFlags::RENDER_TARGET_DBG), - winit::VirtualKeyCode::I => debug_flags.toggle(DebugFlags::TEXTURE_CACHE_DBG), - winit::VirtualKeyCode::T => debug_flags.toggle(DebugFlags::PICTURE_CACHING_DBG), - winit::VirtualKeyCode::Q => debug_flags.toggle( + winit::event::VirtualKeyCode::Escape => { + *control_flow = winit::event_loop::ControlFlow::Exit; + return; + } + winit::event::VirtualKeyCode::P => debug_flags.toggle(DebugFlags::PROFILER_DBG), + winit::event::VirtualKeyCode::O => debug_flags.toggle(DebugFlags::RENDER_TARGET_DBG), + winit::event::VirtualKeyCode::I => debug_flags.toggle(DebugFlags::TEXTURE_CACHE_DBG), + winit::event::VirtualKeyCode::T => debug_flags.toggle(DebugFlags::PICTURE_CACHING_DBG), + winit::event::VirtualKeyCode::Q => debug_flags.toggle( DebugFlags::GPU_TIME_QUERIES | DebugFlags::GPU_SAMPLE_QUERIES ), - winit::VirtualKeyCode::G => debug_flags.toggle(DebugFlags::GPU_CACHE_DBG), - winit::VirtualKeyCode::M => api.notify_memory_pressure(), - winit::VirtualKeyCode::C => { + winit::event::VirtualKeyCode::G => debug_flags.toggle(DebugFlags::GPU_CACHE_DBG), + winit::event::VirtualKeyCode::M => api.notify_memory_pressure(), + winit::event::VirtualKeyCode::C => { let path: PathBuf = "../captures/example".into(); //TODO: switch between SCENE/FRAME capture types // based on "shift" modifier, when `glutin` is updated. @@ -269,6 +275,7 @@ pub fn main_wrapper( _ => { custom_event = example.on_event( win_event, + windowed_context.window(), &mut api, document_id, ) @@ -276,6 +283,7 @@ pub fn main_wrapper( }, other => custom_event = example.on_event( other, + windowed_context.window(), &mut api, document_id, ), @@ -313,7 +321,7 @@ pub fn main_wrapper( example.draw_custom(&*gl); windowed_context.swap_buffers().ok(); - winit::ControlFlow::Continue + *control_flow = winit::event_loop::ControlFlow::Wait; }); renderer.deinit(); diff --git a/gfx/wr/examples/image_resize.rs b/gfx/wr/examples/image_resize.rs index 1e84a7c4a50a..4456b00cafe0 100644 --- a/gfx/wr/examples/image_resize.rs +++ b/gfx/wr/examples/image_resize.rs @@ -77,12 +77,18 @@ impl Example for App { builder.pop_stacking_context(); } - fn on_event(&mut self, event: winit::WindowEvent, api: &mut RenderApi, document_id: DocumentId) -> bool { + fn on_event( + &mut self, + event: winit::event::WindowEvent, + _window: &winit::window::Window, + api: &mut RenderApi, + document_id: DocumentId, + ) -> bool { match event { - winit::WindowEvent::KeyboardInput { - input: winit::KeyboardInput { - state: winit::ElementState::Pressed, - virtual_keycode: Some(winit::VirtualKeyCode::Space), + winit::event::WindowEvent::KeyboardInput { + input: winit::event::KeyboardInput { + state: winit::event::ElementState::Pressed, + virtual_keycode: Some(winit::event::VirtualKeyCode::Space), .. }, .. diff --git a/gfx/wr/examples/multiwindow.rs b/gfx/wr/examples/multiwindow.rs index a86af760ea18..c15ac1713101 100644 --- a/gfx/wr/examples/multiwindow.rs +++ b/gfx/wr/examples/multiwindow.rs @@ -17,13 +17,14 @@ use webrender::api::units::*; use webrender::render_api::*; use webrender::DebugFlags; use winit::dpi::LogicalSize; +use winit::platform::run_return::EventLoopExtRunReturn; struct Notifier { - events_proxy: winit::EventsLoopProxy, + events_proxy: winit::event_loop::EventLoopProxy<()>, } impl Notifier { - fn new(events_proxy: winit::EventsLoopProxy) -> Notifier { + fn new(events_proxy: winit::event_loop::EventLoopProxy<()>) -> Notifier { Notifier { events_proxy } } } @@ -37,7 +38,7 @@ impl RenderNotifier for Notifier { fn wake_up(&self, _composite_needed: bool) { #[cfg(not(target_os = "android"))] - let _ = self.events_proxy.wakeup(); + let _ = self.events_proxy.send_event(()); } fn new_frame_ready(&self, @@ -50,7 +51,7 @@ impl RenderNotifier for Notifier { } struct Window { - events_loop: winit::EventsLoop, //TODO: share events loop? + events_loop: winit::event_loop::EventLoop<()>, //TODO: share events loop? context: Option>, renderer: webrender::Renderer, name: &'static str, @@ -63,11 +64,10 @@ struct Window { impl Window { fn new(name: &'static str, clear_color: ColorF) -> Self { - let events_loop = winit::EventsLoop::new(); - let window_builder = winit::WindowBuilder::new() + let events_loop = winit::event_loop::EventLoop::new(); + let window_builder = winit::window::WindowBuilder::new() .with_title(name) - .with_multitouch() - .with_dimensions(LogicalSize::new(800., 600.)); + .with_inner_size(LogicalSize::new(800. as f64, 600. as f64)); let context = glutin::ContextBuilder::new() .with_gl(glutin::GlRequest::GlThenGles { opengl_version: (3, 2), @@ -88,8 +88,6 @@ impl Window { glutin::Api::WebGl => unimplemented!(), }; - let device_pixel_ratio = context.window().get_hidpi_factor() as f32; - let opts = webrender::RendererOptions { clear_color, ..webrender::RendererOptions::default() @@ -98,9 +96,7 @@ impl Window { let device_size = { let size = context .window() - .get_inner_size() - .unwrap() - .to_physical(device_pixel_ratio as f64); + .inner_size(); DeviceIntSize::new(size.width as i32, size.height as i32) }; let notifier = Box::new(Notifier::new(events_loop.create_proxy())); @@ -140,45 +136,46 @@ impl Window { let renderer = &mut self.renderer; let api = &mut self.api; - self.events_loop.poll_events(|global_event| match global_event { - winit::Event::WindowEvent { event, .. } => match event { - winit::WindowEvent::CloseRequested | - winit::WindowEvent::KeyboardInput { - input: winit::KeyboardInput { - virtual_keycode: Some(winit::VirtualKeyCode::Escape), + self.events_loop.run_return(|global_event, _elwt, control_flow| { + *control_flow = winit::event_loop::ControlFlow::Exit; + match global_event { + winit::event::Event::WindowEvent { event, .. } => match event { + winit::event::WindowEvent::CloseRequested | + winit::event::WindowEvent::KeyboardInput { + input: winit::event::KeyboardInput { + virtual_keycode: Some(winit::event::VirtualKeyCode::Escape), + .. + }, .. - }, - .. - } => { - do_exit = true - } - winit::WindowEvent::KeyboardInput { - input: winit::KeyboardInput { - state: winit::ElementState::Pressed, - virtual_keycode: Some(winit::VirtualKeyCode::P), + } => { + do_exit = true + } + winit::event::WindowEvent::KeyboardInput { + input: winit::event::KeyboardInput { + state: winit::event::ElementState::Pressed, + virtual_keycode: Some(winit::event::VirtualKeyCode::P), + .. + }, .. - }, - .. - } => { - println!("set flags {}", my_name); - api.send_debug_cmd(DebugCommand::SetFlags(DebugFlags::PROFILER_DBG)) + } => { + println!("set flags {}", my_name); + api.send_debug_cmd(DebugCommand::SetFlags(DebugFlags::PROFILER_DBG)) + } + _ => {} } _ => {} } - _ => {} }); if do_exit { return true } let context = unsafe { self.context.take().unwrap().make_current().unwrap() }; - let device_pixel_ratio = context.window().get_hidpi_factor() as f32; + let device_pixel_ratio = context.window().scale_factor() as f32; let device_size = { let size = context .window() - .get_inner_size() - .unwrap() - .to_physical(device_pixel_ratio as f64); + .inner_size(); DeviceIntSize::new(size.width as i32, size.height as i32) }; let layout_size = device_size.to_f32() / euclid::Scale::new(device_pixel_ratio); diff --git a/gfx/wr/examples/scrolling.rs b/gfx/wr/examples/scrolling.rs index 082e409406f3..7badeb94a88d 100644 --- a/gfx/wr/examples/scrolling.rs +++ b/gfx/wr/examples/scrolling.rs @@ -165,22 +165,28 @@ impl Example for App { builder.pop_stacking_context(); } - fn on_event(&mut self, event: winit::WindowEvent, api: &mut RenderApi, document_id: DocumentId) -> bool { + fn on_event( + &mut self, + event: winit::event::WindowEvent, + window: &winit::window::Window, + api: &mut RenderApi, + document_id: DocumentId, + ) -> bool { let mut txn = Transaction::new(); match event { - winit::WindowEvent::KeyboardInput { - input: winit::KeyboardInput { - state: winit::ElementState::Pressed, + winit::event::WindowEvent::KeyboardInput { + input: winit::event::KeyboardInput { + state: winit::event::ElementState::Pressed, virtual_keycode: Some(key), .. }, .. } => { let offset = match key { - winit::VirtualKeyCode::Down => Some(LayoutVector2D::new(0.0, -10.0)), - winit::VirtualKeyCode::Up => Some(LayoutVector2D::new(0.0, 10.0)), - winit::VirtualKeyCode::Right => Some(LayoutVector2D::new(-10.0, 0.0)), - winit::VirtualKeyCode::Left => Some(LayoutVector2D::new(10.0, 0.0)), + winit::event::VirtualKeyCode::Down => Some(LayoutVector2D::new(0.0, -10.0)), + winit::event::VirtualKeyCode::Up => Some(LayoutVector2D::new(0.0, 10.0)), + winit::event::VirtualKeyCode::Right => Some(LayoutVector2D::new(-10.0, 0.0)), + winit::event::VirtualKeyCode::Left => Some(LayoutVector2D::new(10.0, 0.0)), _ => None, }; @@ -197,14 +203,15 @@ impl Example for App { txn.generate_frame(0, RenderReasons::empty()); } } - winit::WindowEvent::CursorMoved { position: LogicalPosition { x, y }, .. } => { - self.cursor_position = WorldPoint::new(x as f32, y as f32); + winit::event::WindowEvent::CursorMoved { position, .. } => { + let pos: LogicalPosition = position.to_logical(window.scale_factor()); + self.cursor_position = WorldPoint::new(pos.x, pos.y); } - winit::WindowEvent::MouseWheel { delta, .. } => { + winit::event::WindowEvent::MouseWheel { delta, .. } => { const LINE_HEIGHT: f32 = 38.0; let (dx, dy) = match delta { - winit::MouseScrollDelta::LineDelta(dx, dy) => (dx, dy * LINE_HEIGHT), - winit::MouseScrollDelta::PixelDelta(pos) => (pos.x as f32, pos.y as f32), + winit::event::MouseScrollDelta::LineDelta(dx, dy) => (dx, dy * LINE_HEIGHT), + winit::event::MouseScrollDelta::PixelDelta(pos) => (pos.x as f32, pos.y as f32), }; self.scroll_offset += LayoutVector2D::new(dx, dy); @@ -219,7 +226,7 @@ impl Example for App { txn.generate_frame(0, RenderReasons::empty()); } - winit::WindowEvent::MouseInput { .. } => { + winit::event::WindowEvent::MouseInput { .. } => { let results = api.hit_test( document_id, self.cursor_position, diff --git a/gfx/wr/examples/texture_cache_stress.rs b/gfx/wr/examples/texture_cache_stress.rs index 4b40c997b6a6..f23b23b64a8f 100644 --- a/gfx/wr/examples/texture_cache_stress.rs +++ b/gfx/wr/examples/texture_cache_stress.rs @@ -192,14 +192,15 @@ impl Example for App { fn on_event( &mut self, - event: winit::WindowEvent, + event: winit::event::WindowEvent, + _window: &winit::window::Window, api: &mut RenderApi, document_id: DocumentId, ) -> bool { match event { - winit::WindowEvent::KeyboardInput { - input: winit::KeyboardInput { - state: winit::ElementState::Pressed, + winit::event::WindowEvent::KeyboardInput { + input: winit::event::KeyboardInput { + state: winit::event::ElementState::Pressed, virtual_keycode: Some(key), .. }, @@ -208,7 +209,7 @@ impl Example for App { let mut txn = Transaction::new(); match key { - winit::VirtualKeyCode::S => { + winit::event::VirtualKeyCode::S => { self.stress_keys.clear(); for _ in 0 .. 16 { @@ -235,10 +236,10 @@ impl Example for App { } } } - winit::VirtualKeyCode::D => if let Some(image_key) = self.image_key.take() { + winit::event::VirtualKeyCode::D => if let Some(image_key) = self.image_key.take() { txn.delete_image(image_key); }, - winit::VirtualKeyCode::U => if let Some(image_key) = self.image_key { + winit::event::VirtualKeyCode::U => if let Some(image_key) = self.image_key { let size = 128; self.image_generator.generate_image(size); @@ -249,7 +250,7 @@ impl Example for App { &DirtyRect::All, ); }, - winit::VirtualKeyCode::E => { + winit::event::VirtualKeyCode::E => { if let Some(image_key) = self.image_key.take() { txn.delete_image(image_key); } @@ -272,7 +273,7 @@ impl Example for App { self.image_key = Some(image_key); } - winit::VirtualKeyCode::R => { + winit::event::VirtualKeyCode::R => { if let Some(image_key) = self.image_key.take() { txn.delete_image(image_key); } diff --git a/gfx/wr/examples/yuv.rs b/gfx/wr/examples/yuv.rs index c9c2c10edacc..16e18b2944c0 100644 --- a/gfx/wr/examples/yuv.rs +++ b/gfx/wr/examples/yuv.rs @@ -189,7 +189,8 @@ impl Example for App { fn on_event( &mut self, - _event: winit::WindowEvent, + _event: winit::event::WindowEvent, + _window: &winit::window::Window, _api: &mut RenderApi, _document_id: DocumentId, ) -> bool { diff --git a/gfx/wr/servo-tidy.toml b/gfx/wr/servo-tidy.toml index bee447cba64f..b9973001edc0 100644 --- a/gfx/wr/servo-tidy.toml +++ b/gfx/wr/servo-tidy.toml @@ -11,17 +11,15 @@ packages = [ "core-foundation-sys", "core-graphics", "gl_generator", - "gleam", + # glsl requires 5.1, and xcursor (required by winit) requires 7.1. + # when a version of glsl depending on 7.1 is published we can update. + "nom", "rand_core", - # https://github.com/trimental/andrew/issues/5 - "rusttype", - # https://bugzilla.mozilla.org/show_bug.cgi?id=1615148 - "smallvec", + # Can be fixed by updating clap dependency - see bug 1765326 + "strsim", "yaml-rust", - # These are tracked in bug 1587468, see there for pending work. - "proc-macro2", - "quote", - "unicode-xid", + # Can be fixed by removing time dependency - see bug 1765324 + "wasi", ] # Files that are ignored for all tidy and lint checks. diff --git a/gfx/wr/wrench/Cargo.toml b/gfx/wr/wrench/Cargo.toml index 3ea2a0899977..365b75ecf315 100644 --- a/gfx/wr/wrench/Cargo.toml +++ b/gfx/wr/wrench/Cargo.toml @@ -10,7 +10,7 @@ edition = "2018" base64 = "0.13" env_logger = { version = "0.5", optional = true } gleam = "0.13" -glutin = "0.21" +glutin = "0.28" clap = { version = "2", features = ["yaml"] } glsl = "4.0" log = "0.4" @@ -22,7 +22,7 @@ crossbeam = "0.2" osmesa-sys = { version = "0.1.2", optional = true } osmesa-src = { version = "0.2", git = "https://github.com/servo/osmesa-src", optional = true } webrender = { path = "../webrender", features = ["capture", "replay", "png", "profiler", "no_static_freetype", "leak_checks"] } -winit = "0.19" +winit = "0.26" serde = { version = "1.0", features = ["derive"] } semver = "0.9.0" swgl = { path = "../swgl", optional = true } diff --git a/gfx/wr/wrench/src/angle.rs b/gfx/wr/wrench/src/angle.rs index bdd538bda2bf..94be95a62522 100644 --- a/gfx/wr/wrench/src/angle.rs +++ b/gfx/wr/wrench/src/angle.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use glutin::{self, ContextBuilder, ContextCurrentState, CreationError}; -use winit::{EventsLoop, Window, WindowBuilder}; +use winit::{event_loop::EventLoop, window::Window, window::WindowBuilder}; #[cfg(not(windows))] pub enum Context {} @@ -16,7 +16,7 @@ impl Context { pub fn with_window( _: WindowBuilder, _: ContextBuilder<'_, T>, - _: &EventsLoop, + _: &EventLoop<()>, ) -> Result<(Window, Self), CreationError> { Err(CreationError::PlatformSpecific( "ANGLE rendering is only supported on Windows".into(), @@ -27,16 +27,16 @@ impl Context { pub fn with_window( window_builder: WindowBuilder, context_builder: ContextBuilder<'_, T>, - events_loop: &EventsLoop, + events_loop: &EventLoop<()>, ) -> Result<(Window, Self), CreationError> { - use winit::os::windows::WindowExt; + use winit::platform::windows::WindowExtWindows; // FIXME: &context_builder.pf_reqs https://github.com/tomaka/glutin/pull/1002 let pf_reqs = &glutin::PixelFormatRequirements::default(); let gl_attr = &context_builder.gl_attr.map_sharing(|_| unimplemented!()); let window = window_builder.build(events_loop)?; Self::new(pf_reqs, gl_attr) - .and_then(|p| p.finish(window.get_hwnd() as _)) + .and_then(|p| p.finish(window.hwnd() as _)) .map(|context| (window, context)) } diff --git a/gfx/wr/wrench/src/main.rs b/gfx/wr/wrench/src/main.rs index d179bf20d306..b44c815057a1 100644 --- a/gfx/wr/wrench/src/main.rs +++ b/gfx/wr/wrench/src/main.rs @@ -30,7 +30,6 @@ use gleam::gl; #[cfg(feature = "software")] use gleam::gl::Gl; use crate::perf::PerfHarness; -use crate::png::save_flipped; use crate::rawtest::RawtestHarness; use crate::reftest::{ReftestHarness, ReftestOptions}; use std::fs; @@ -51,7 +50,8 @@ use webrender::api::*; use webrender::render_api::*; use webrender::api::units::*; use winit::dpi::{LogicalPosition, LogicalSize}; -use winit::VirtualKeyCode; +use winit::event::VirtualKeyCode; +use winit::platform::run_return::EventLoopExtRunReturn; use crate::wrench::{CapturedSequence, Wrench, WrenchThing}; use crate::yaml_frame_reader::YamlFrameReader; @@ -138,7 +138,7 @@ mod swgl { pub enum WindowWrapper { WindowedContext(glutin::WindowedContext, Rc, Option), - Angle(winit::Window, angle::Context, Rc, Option), + Angle(winit::window::Window, angle::Context, Rc, Option), Headless(HeadlessContext, Rc, Option), } @@ -184,11 +184,8 @@ impl WindowWrapper { } fn get_inner_size(&self) -> DeviceIntSize { - fn inner_size(window: &winit::Window) -> DeviceIntSize { - let size = window - .get_inner_size() - .unwrap() - .to_physical(window.get_hidpi_factor()); + fn inner_size(window: &winit::window::Window) -> DeviceIntSize { + let size = window.inner_size(); DeviceIntSize::new(size.width as i32, size.height as i32) } match *self { @@ -203,9 +200,9 @@ impl WindowWrapper { fn hidpi_factor(&self) -> f32 { match *self { WindowWrapper::WindowedContext(ref windowed_context, ..) => { - windowed_context.window().get_hidpi_factor() as f32 + windowed_context.window().scale_factor() as f32 } - WindowWrapper::Angle(ref window, ..) => window.get_hidpi_factor() as f32, + WindowWrapper::Angle(ref window, ..) => window.scale_factor() as f32, WindowWrapper::Headless(..) => 1.0, } } @@ -317,7 +314,7 @@ fn make_software_context() -> swgl::Context { fn make_window( size: DeviceIntSize, vsync: bool, - events_loop: &Option, + events_loop: &Option>, angle: bool, gl_request: glutin::GlRequest, software: bool, @@ -332,10 +329,10 @@ fn make_window( let context_builder = glutin::ContextBuilder::new() .with_gl(gl_request) .with_vsync(vsync); - let window_builder = winit::WindowBuilder::new() + + let window_builder = winit::window::WindowBuilder::new() .with_title("WRench") - .with_multitouch() - .with_dimensions(LogicalSize::new(size.width as f64, size.height as f64)); + .with_inner_size(LogicalSize::new(size.width as f64, size.height as f64)); if angle { angle::Context::with_window( @@ -602,7 +599,7 @@ fn main() { let mut events_loop = if args.is_present("headless") { None } else { - Some(winit::EventsLoop::new()) + Some(winit::event_loop::EventLoop::new()) }; let gl_request = match args.value_of("renderer") { @@ -681,8 +678,7 @@ fn main() { render( &mut wrench, &mut window, - size, - &mut events_loop, + events_loop.as_mut().expect("`wrench show` is not supported in headless mode"), subargs, no_block, no_batch, @@ -766,8 +762,7 @@ fn main() { fn render<'a>( wrench: &mut Wrench, window: &mut WindowWrapper, - size: DeviceIntSize, - events_loop: &mut Option, + events_loop: &mut winit::event_loop::EventLoop<()>, subargs: &clap::ArgMatches<'a>, no_block: bool, no_batch: bool, @@ -798,10 +793,6 @@ fn render<'a>( } }; - let mut show_help = false; - let mut do_loop = false; - let mut cursor_position = WorldPoint::zero(); - window.update(wrench); thing.do_frame(wrench); @@ -818,197 +809,178 @@ fn render<'a>( wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); } - let mut body = |wrench: &mut Wrench, events: Vec| { - let mut do_frame = false; - let mut do_render = !events.is_empty(); + let mut show_help = false; + let mut do_loop = false; + let mut cursor_position = WorldPoint::zero(); + let mut do_render = false; + let mut do_frame = false; - for event in events { - match event { - winit::Event::Awakened => {} - winit::Event::WindowEvent { event, .. } => match event { - winit::WindowEvent::CloseRequested => { - return winit::ControlFlow::Break; - } - winit::WindowEvent::Refresh | - winit::WindowEvent::Focused(..) => {} - winit::WindowEvent::CursorMoved { position: LogicalPosition { x, y }, .. } => { - cursor_position = WorldPoint::new(x as f32, y as f32); - wrench.renderer.set_cursor_position( - DeviceIntPoint::new( - cursor_position.x.round() as i32, - cursor_position.y.round() as i32, - ), - ); - } - winit::WindowEvent::KeyboardInput { - input: winit::KeyboardInput { - state: winit::ElementState::Pressed, - virtual_keycode: Some(vk), - .. - }, + events_loop.run_return(|event, _elwt, control_flow| { + // By default after each iteration of the event loop we block the thread until the next + // events arrive. --no-block can be used to run the event loop as quickly as possible. + // On Android, we are generally profiling when running wrench, and don't want to block + // on UI events. + if !no_block && cfg!(not(target_os = "android")) { + *control_flow = winit::event_loop::ControlFlow::Wait; + } else { + *control_flow = winit::event_loop::ControlFlow::Poll; + } + + match event { + winit::event::Event::UserEvent(_) => { + do_render = true; + } + winit::event::Event::WindowEvent { event, .. } => match event { + winit::event::WindowEvent::CloseRequested => { + *control_flow = winit::event_loop::ControlFlow::Exit; + } + winit::event::WindowEvent::Focused(..) => do_render = true, + winit::event::WindowEvent::CursorMoved { position, .. } => { + let pos: LogicalPosition = position.to_logical(window.hidpi_factor() as f64); + cursor_position = WorldPoint::new(pos.x, pos.y); + wrench.renderer.set_cursor_position( + DeviceIntPoint::new( + cursor_position.x.round() as i32, + cursor_position.y.round() as i32, + ), + ); + do_render = true; + } + winit::event::WindowEvent::KeyboardInput { + input: winit::event::KeyboardInput { + state: winit::event::ElementState::Pressed, + virtual_keycode: Some(vk), .. - } => match vk { - VirtualKeyCode::Escape => { - return winit::ControlFlow::Break; - } - VirtualKeyCode::B => { - debug_flags.toggle(DebugFlags::INVALIDATION_DBG); - wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); - } - VirtualKeyCode::P => { - debug_flags.toggle(DebugFlags::PROFILER_DBG); - wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); - } - VirtualKeyCode::O => { - debug_flags.toggle(DebugFlags::RENDER_TARGET_DBG); - wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); - } - VirtualKeyCode::I => { - debug_flags.toggle(DebugFlags::TEXTURE_CACHE_DBG); - wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); - } - VirtualKeyCode::D => { - debug_flags.toggle(DebugFlags::PICTURE_CACHING_DBG); - wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); - } - VirtualKeyCode::Q => { - debug_flags.toggle(DebugFlags::GPU_TIME_QUERIES | DebugFlags::GPU_SAMPLE_QUERIES); - wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); - } - VirtualKeyCode::V => { - debug_flags.toggle(DebugFlags::SHOW_OVERDRAW); - wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); - } - VirtualKeyCode::G => { - debug_flags.toggle(DebugFlags::GPU_CACHE_DBG); - wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); - - // force scene rebuild to see the full set of used GPU cache entries - let mut txn = Transaction::new(); - txn.set_root_pipeline(wrench.root_pipeline_id); - wrench.api.send_transaction(wrench.document_id, txn); - - do_render = false; - do_frame = true; - } - VirtualKeyCode::M => { - wrench.api.notify_memory_pressure(); - } - VirtualKeyCode::L => { - do_loop = !do_loop; - } - VirtualKeyCode::Left => { - thing.prev_frame(); - do_render = false; - do_frame = true; - } - VirtualKeyCode::Right => { - thing.next_frame(); - do_render = false; - do_frame = true; - } - VirtualKeyCode::H => { - show_help = !show_help; - } - VirtualKeyCode::C => { - let path = PathBuf::from("../captures/wrench"); - wrench.api.save_capture(path, CaptureBits::all()); - do_render = false; - } - VirtualKeyCode::X => { - let results = wrench.api.hit_test( - wrench.document_id, - cursor_position, - ); - - println!("Hit test results:"); - for item in &results.items { - println!(" • {:?}", item); - } - println!(); - do_render = false; - } - VirtualKeyCode::Z => { - debug_flags.toggle(DebugFlags::ZOOM_DBG); - wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); - } - VirtualKeyCode::Y => { - println!("Clearing all caches..."); - wrench.api.send_debug_cmd(DebugCommand::ClearCaches(ClearCache::all())); - do_frame = true; - } - _other_virtual_keycode => { do_render = false; } + }, + .. + } => match vk { + VirtualKeyCode::Escape => { + *control_flow = winit::event_loop::ControlFlow::Exit; } - _other_window_event => { do_render = false; } - }, - _other_event => { do_render = false; } + VirtualKeyCode::B => { + debug_flags.toggle(DebugFlags::INVALIDATION_DBG); + wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); + do_render = true; + } + VirtualKeyCode::P => { + debug_flags.toggle(DebugFlags::PROFILER_DBG); + wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); + do_render = true; + } + VirtualKeyCode::O => { + debug_flags.toggle(DebugFlags::RENDER_TARGET_DBG); + wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); + do_render = true; + } + VirtualKeyCode::I => { + debug_flags.toggle(DebugFlags::TEXTURE_CACHE_DBG); + wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); + do_render = true; + } + VirtualKeyCode::D => { + debug_flags.toggle(DebugFlags::PICTURE_CACHING_DBG); + wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); + do_render = true; + } + VirtualKeyCode::Q => { + debug_flags.toggle(DebugFlags::GPU_TIME_QUERIES | DebugFlags::GPU_SAMPLE_QUERIES); + wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); + do_render = true; + } + VirtualKeyCode::V => { + debug_flags.toggle(DebugFlags::SHOW_OVERDRAW); + wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); + do_render = true; + } + VirtualKeyCode::G => { + debug_flags.toggle(DebugFlags::GPU_CACHE_DBG); + wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); + + // force scene rebuild to see the full set of used GPU cache entries + let mut txn = Transaction::new(); + txn.set_root_pipeline(wrench.root_pipeline_id); + wrench.api.send_transaction(wrench.document_id, txn); + + do_frame = true; + } + VirtualKeyCode::M => { + wrench.api.notify_memory_pressure(); + do_render = true; + } + VirtualKeyCode::L => { + do_loop = !do_loop; + do_render = true; + } + VirtualKeyCode::Left => { + thing.prev_frame(); + do_frame = true; + } + VirtualKeyCode::Right => { + thing.next_frame(); + do_frame = true; + } + VirtualKeyCode::H => { + show_help = !show_help; + do_render = true; + } + VirtualKeyCode::C => { + let path = PathBuf::from("../captures/wrench"); + wrench.api.save_capture(path, CaptureBits::all()); + } + VirtualKeyCode::X => { + let results = wrench.api.hit_test( + wrench.document_id, + cursor_position, + ); + + println!("Hit test results:"); + for item in &results.items { + println!(" • {:?}", item); + } + println!(); + } + VirtualKeyCode::Z => { + debug_flags.toggle(DebugFlags::ZOOM_DBG); + wrench.api.send_debug_cmd(DebugCommand::SetFlags(debug_flags)); + do_render = true; + } + VirtualKeyCode::Y => { + println!("Clearing all caches..."); + wrench.api.send_debug_cmd(DebugCommand::ClearCaches(ClearCache::all())); + do_frame = true; + } + _ => {} + } + _ => {} + }, + winit::event::Event::MainEventsCleared => { + window.update(wrench); + + if do_frame { + do_frame = false; + let frame_num = thing.do_frame(wrench); + unsafe { + CURRENT_FRAME_NUMBER = frame_num; + } + } + + if do_render { + do_render = false; + + if show_help { + wrench.show_onscreen_help(); + } + + wrench.render(); + window.upload_software_to_native(); + window.swap_buffers(); + + if do_loop { + thing.next_frame(); + } + } } + _ => {} } - - window.update(wrench); - - if do_frame { - let frame_num = thing.do_frame(wrench); - unsafe { - CURRENT_FRAME_NUMBER = frame_num; - } - } - - if do_render { - if show_help { - wrench.show_onscreen_help(); - } - - wrench.render(); - window.upload_software_to_native(); - window.swap_buffers(); - - if do_loop { - thing.next_frame(); - } - } - - winit::ControlFlow::Continue - }; - - if let Some(events_loop) = events_loop.as_mut() { - // We want to ensure that we: - // - // (a) Block the thread when no events are present (for CPU/battery purposes) - // (b) Don't lag the input events by having the event queue back up. - loop { - let mut pending_events = Vec::new(); - - // Block the thread until at least one event arrives - // On Android, we are generally profiling when running - // wrench, and don't want to block on UI events. - if !no_block && cfg!(not(target_os = "android")) { - events_loop.run_forever(|event| { - pending_events.push(event); - winit::ControlFlow::Break - }); - } - - // Collect any other pending events that are also available - events_loop.poll_events(|event| { - pending_events.push(event); - }); - - // Ensure there is at least one event present so that the - // frame gets rendered. - if pending_events.is_empty() { - pending_events.push(winit::Event::Awakened); - } - - // Process all of those pending events in the next vsync period - if body(wrench, pending_events) == winit::ControlFlow::Break { - break; - } - } - } else { - while body(wrench, vec![winit::Event::Awakened]) == winit::ControlFlow::Continue {} - let fb_rect = FramebufferIntSize::new(size.width, size.height).into(); - let pixels = wrench.renderer.read_pixels_rgba8(fb_rect); - save_flipped("screenshot.png", pixels, size); - } + }); } diff --git a/gfx/wr/wrench/src/wrench.rs b/gfx/wr/wrench/src/wrench.rs index c06cefc0473b..854558e31d97 100644 --- a/gfx/wr/wrench/src/wrench.rs +++ b/gfx/wr/wrench/src/wrench.rs @@ -9,7 +9,7 @@ use crossbeam::sync::chase_lev; use dwrote; #[cfg(all(unix, not(target_os = "android")))] use font_loader::system_fonts; -use winit::EventsLoopProxy; +use winit::event_loop::EventLoopProxy; use std::collections::HashMap; use std::path::{Path, PathBuf}; use std::sync::{Arc, Mutex}; @@ -36,7 +36,7 @@ pub enum FontDescriptor { } struct NotifierData { - events_loop_proxy: Option, + events_loop_proxy: Option>, frames_notified: u32, timing_receiver: chase_lev::Stealer, verbose: bool, @@ -44,7 +44,7 @@ struct NotifierData { impl NotifierData { fn new( - events_loop_proxy: Option, + events_loop_proxy: Option>, timing_receiver: chase_lev::Stealer, verbose: bool, ) -> Self { @@ -84,7 +84,7 @@ impl Notifier { if let Some(ref _elp) = data.events_loop_proxy { #[cfg(not(target_os = "android"))] - let _ = _elp.wakeup(); + let _ = _elp.send_event(()); } } } @@ -217,7 +217,7 @@ impl Wrench { #[allow(clippy::too_many_arguments)] pub fn new( window: &mut WindowWrapper, - proxy: Option, + proxy: Option>, shader_override_path: Option, use_optimized_shaders: bool, size: DeviceIntSize, @@ -268,7 +268,7 @@ impl Wrench { // put an Awakened event into the queue to kick off the first frame if let Some(ref _elp) = proxy { #[cfg(not(target_os = "android"))] - let _ = _elp.wakeup(); + let _ = _elp.send_event(()); } let (timing_sender, timing_receiver) = chase_lev::deque(); diff --git a/taskcluster/ci/toolchain/misc.yml b/taskcluster/ci/toolchain/misc.yml index a0f371e46f14..99188c732df8 100644 --- a/taskcluster/ci/toolchain/misc.yml +++ b/taskcluster/ci/toolchain/misc.yml @@ -175,15 +175,9 @@ wrench-deps: - 'gfx/wr/Cargo.lock' - 'gfx/wr/ci-scripts/install-meson.sh' toolchain-artifact: public/build/wrench-deps.tar.zst - dependencies: - linux64-rust-1.47: toolchain-linux64-rust-1.47 fetches: fetch: - android-rs-glue - linux64-rust-1.47: - - artifact: rustc.tar.zst - extract: true - dest: rustc-1.47 toolchain: - linux64-rust # whatever m-c is built with