diff --git a/Cargo.lock b/Cargo.lock index f74edc1c..6cd188bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2514,6 +2514,7 @@ dependencies = [ "wasm-bindgen-futures", "web-sys", "wgpu", + "winit", ] [[package]] diff --git a/code/beginner/tutorial1-window/src/lib.rs b/code/beginner/tutorial1-window/src/lib.rs index 63b41050..0267387e 100644 --- a/code/beginner/tutorial1-window/src/lib.rs +++ b/code/beginner/tutorial1-window/src/lib.rs @@ -10,6 +10,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; // This will store the state of our game pub struct State { @@ -156,11 +158,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial2-surface/src/challenge.rs b/code/beginner/tutorial2-surface/src/challenge.rs index e05a6d1b..ed58d337 100644 --- a/code/beginner/tutorial2-surface/src/challenge.rs +++ b/code/beginner/tutorial2-surface/src/challenge.rs @@ -10,6 +10,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; pub struct State { surface: wgpu::Surface<'static>, @@ -291,11 +293,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial2-surface/src/lib.rs b/code/beginner/tutorial2-surface/src/lib.rs index b0de09c8..1000a45a 100644 --- a/code/beginner/tutorial2-surface/src/lib.rs +++ b/code/beginner/tutorial2-surface/src/lib.rs @@ -10,6 +10,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; pub struct State { surface: wgpu::Surface<'static>, @@ -294,11 +296,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial3-pipeline/src/challenge.rs b/code/beginner/tutorial3-pipeline/src/challenge.rs index cb1c462f..81fba41f 100644 --- a/code/beginner/tutorial3-pipeline/src/challenge.rs +++ b/code/beginner/tutorial3-pipeline/src/challenge.rs @@ -10,6 +10,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; pub struct State { surface: wgpu::Surface<'static>, @@ -423,11 +425,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial3-pipeline/src/lib.rs b/code/beginner/tutorial3-pipeline/src/lib.rs index e1b0c8cf..29ed9058 100644 --- a/code/beginner/tutorial3-pipeline/src/lib.rs +++ b/code/beginner/tutorial3-pipeline/src/lib.rs @@ -10,6 +10,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; pub struct State { surface: wgpu::Surface<'static>, @@ -361,11 +363,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial4-buffer/src/challenge.rs b/code/beginner/tutorial4-buffer/src/challenge.rs index 3bc26342..9d3c5b25 100644 --- a/code/beginner/tutorial4-buffer/src/challenge.rs +++ b/code/beginner/tutorial4-buffer/src/challenge.rs @@ -11,6 +11,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; #[repr(C)] #[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)] @@ -497,11 +499,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial4-buffer/src/lib.rs b/code/beginner/tutorial4-buffer/src/lib.rs index 4697d796..8a7ab99f 100644 --- a/code/beginner/tutorial4-buffer/src/lib.rs +++ b/code/beginner/tutorial4-buffer/src/lib.rs @@ -11,6 +11,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; #[repr(C)] #[derive(Copy, Clone, Debug, bytemuck::Pod, bytemuck::Zeroable)] @@ -437,11 +439,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial5-textures/src/challenge.rs b/code/beginner/tutorial5-textures/src/challenge.rs index 143e1043..8080aa56 100644 --- a/code/beginner/tutorial5-textures/src/challenge.rs +++ b/code/beginner/tutorial5-textures/src/challenge.rs @@ -11,6 +11,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod texture; @@ -526,11 +528,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial5-textures/src/lib.rs b/code/beginner/tutorial5-textures/src/lib.rs index 05e6a52f..2915c5fc 100644 --- a/code/beginner/tutorial5-textures/src/lib.rs +++ b/code/beginner/tutorial5-textures/src/lib.rs @@ -11,6 +11,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod texture; @@ -485,11 +487,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial6-uniforms/src/challenge.rs b/code/beginner/tutorial6-uniforms/src/challenge.rs index 961b5a0e..7fb1b9a1 100644 --- a/code/beginner/tutorial6-uniforms/src/challenge.rs +++ b/code/beginner/tutorial6-uniforms/src/challenge.rs @@ -11,6 +11,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod texture; @@ -693,11 +695,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial6-uniforms/src/lib.rs b/code/beginner/tutorial6-uniforms/src/lib.rs index 280cb3aa..bea3a1d2 100644 --- a/code/beginner/tutorial6-uniforms/src/lib.rs +++ b/code/beginner/tutorial6-uniforms/src/lib.rs @@ -11,6 +11,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod texture; @@ -686,11 +688,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial7-instancing/src/challenge.rs b/code/beginner/tutorial7-instancing/src/challenge.rs index b0593a2a..a146bf72 100644 --- a/code/beginner/tutorial7-instancing/src/challenge.rs +++ b/code/beginner/tutorial7-instancing/src/challenge.rs @@ -12,6 +12,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod texture; @@ -798,11 +800,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial7-instancing/src/lib.rs b/code/beginner/tutorial7-instancing/src/lib.rs index 5b7ffc42..aab8a3fc 100644 --- a/code/beginner/tutorial7-instancing/src/lib.rs +++ b/code/beginner/tutorial7-instancing/src/lib.rs @@ -12,6 +12,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod texture; @@ -780,11 +782,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial8-depth/src/challenge.rs b/code/beginner/tutorial8-depth/src/challenge.rs index 46daf668..2b6a4e26 100644 --- a/code/beginner/tutorial8-depth/src/challenge.rs +++ b/code/beginner/tutorial8-depth/src/challenge.rs @@ -13,6 +13,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod texture; @@ -1011,11 +1013,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial8-depth/src/lib.rs b/code/beginner/tutorial8-depth/src/lib.rs index 2032e788..f2ab2d7f 100644 --- a/code/beginner/tutorial8-depth/src/lib.rs +++ b/code/beginner/tutorial8-depth/src/lib.rs @@ -12,6 +12,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod texture; @@ -811,11 +813,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/beginner/tutorial9-models/src/lib.rs b/code/beginner/tutorial9-models/src/lib.rs index af65f2b2..c31b792f 100644 --- a/code/beginner/tutorial9-models/src/lib.rs +++ b/code/beginner/tutorial9-models/src/lib.rs @@ -12,6 +12,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod model; mod resources; @@ -723,11 +725,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/intermediate/tutorial10-lighting/src/lib.rs b/code/intermediate/tutorial10-lighting/src/lib.rs index d2601da9..dd320d2c 100644 --- a/code/intermediate/tutorial10-lighting/src/lib.rs +++ b/code/intermediate/tutorial10-lighting/src/lib.rs @@ -12,6 +12,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod model; mod resources; @@ -857,11 +859,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/intermediate/tutorial11-normals/src/lib.rs b/code/intermediate/tutorial11-normals/src/lib.rs index 43087feb..6fd0f657 100644 --- a/code/intermediate/tutorial11-normals/src/lib.rs +++ b/code/intermediate/tutorial11-normals/src/lib.rs @@ -12,6 +12,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod model; mod resources; @@ -904,11 +906,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/intermediate/tutorial12-camera/src/lib.rs b/code/intermediate/tutorial12-camera/src/lib.rs index 32726f0a..05ca6553 100644 --- a/code/intermediate/tutorial12-camera/src/lib.rs +++ b/code/intermediate/tutorial12-camera/src/lib.rs @@ -10,6 +10,8 @@ use winit::{event::*, event_loop::EventLoop, keyboard::PhysicalKey, window::Wind #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod camera; mod model; @@ -838,11 +840,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/intermediate/tutorial13-hdr/src/lib.rs b/code/intermediate/tutorial13-hdr/src/lib.rs index a585529f..6edaf28c 100644 --- a/code/intermediate/tutorial13-hdr/src/lib.rs +++ b/code/intermediate/tutorial13-hdr/src/lib.rs @@ -12,6 +12,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod camera; mod hdr; @@ -969,11 +971,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/intermediate/wip-terrain/src/lib.rs b/code/intermediate/wip-terrain/src/lib.rs index 77312be8..7a15ae5a 100644 --- a/code/intermediate/wip-terrain/src/lib.rs +++ b/code/intermediate/wip-terrain/src/lib.rs @@ -12,6 +12,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod bindgroups; mod camera; @@ -892,11 +894,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/showcase/compute/src/main.rs b/code/showcase/compute/src/main.rs index d5d71e3c..edf37c54 100644 --- a/code/showcase/compute/src/main.rs +++ b/code/showcase/compute/src/main.rs @@ -780,11 +780,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/showcase/framework/src/lib.rs b/code/showcase/framework/src/lib.rs index 3b5f7414..26be6e23 100644 --- a/code/showcase/framework/src/lib.rs +++ b/code/showcase/framework/src/lib.rs @@ -16,6 +16,8 @@ pub use shader_canvas::*; #[cfg(not(target_arch = "wasm32"))] use pollster::FutureExt; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; use std::ops::Deref; use std::path::Path; @@ -444,8 +446,17 @@ pub fn run() -> anyhow::Result<()> { log::info!("run"); let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::::new(&event_loop); - event_loop.run_app(&mut app)?; + + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::::new(&event_loop); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/code/showcase/offscreen/Cargo.toml b/code/showcase/offscreen/Cargo.toml index 2cad2e72..6d07835b 100644 --- a/code/showcase/offscreen/Cargo.toml +++ b/code/showcase/offscreen/Cargo.toml @@ -21,6 +21,7 @@ web-sys = { version = "0.3", features = [ "Blob", "BlobPropertyBag", "Url", - "DedicatedWorkerGlobalScope" + "DedicatedWorkerGlobalScope", ] } wgpu = "28.0" +winit = { version = "0.30" } diff --git a/code/showcase/offscreen/src/lib.rs b/code/showcase/offscreen/src/lib.rs index 2b8e6dba..1f9052a9 100644 --- a/code/showcase/offscreen/src/lib.rs +++ b/code/showcase/offscreen/src/lib.rs @@ -1,4 +1,5 @@ use wasm_bindgen::prelude::*; +use winit::platform::web::EventLoopExtWebSys; /// Wrapper around a function pointer struct Work { diff --git a/code/showcase/pong/src/lib.rs b/code/showcase/pong/src/lib.rs index b2c94aec..ebefc3d1 100644 --- a/code/showcase/pong/src/lib.rs +++ b/code/showcase/pong/src/lib.rs @@ -10,6 +10,8 @@ use system::System; #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; use winit::dpi::PhysicalSize; use winit::event::*; diff --git a/code/showcase/threading/src/lib.rs b/code/showcase/threading/src/lib.rs index 453d2f5b..cadc9a3b 100644 --- a/code/showcase/threading/src/lib.rs +++ b/code/showcase/threading/src/lib.rs @@ -12,6 +12,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; mod camera; mod model; @@ -839,11 +841,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) } diff --git a/docs/beginner/tutorial1-window/README.md b/docs/beginner/tutorial1-window/README.md index 23ef2b2c..de803ba9 100644 --- a/docs/beginner/tutorial1-window/README.md +++ b/docs/beginner/tutorial1-window/README.md @@ -47,6 +47,8 @@ use winit::{ #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +use winit::platform::web::EventLoopExtWebSys; // This will store the state of our game pub struct State { @@ -241,11 +243,16 @@ pub fn run() -> anyhow::Result<()> { } let event_loop = EventLoop::with_user_event().build()?; - let mut app = App::new( - #[cfg(target_arch = "wasm32")] - &event_loop, - ); - event_loop.run_app(&mut app)?; + #[cfg(not(target_arch = "wasm32"))] + { + let mut app = App::new(); + event_loop.run_app(&mut app)?; + } + #[cfg(target_arch = "wasm32")] + { + let app = App::new(&event_loop); + event_loop.spawn_app(app); + } Ok(()) }