From 0630fc56ec5c1d696408c13ed49bd734af1fbfec Mon Sep 17 00:00:00 2001 From: Xevion Date: Tue, 12 Sep 2023 13:36:29 -0500 Subject: [PATCH] fix: key stealing, disable Emscripten module, disable colored ANSI for emscripten builds --- .cargo/config.toml | 2 +- STORY.md | 7 +++++++ scripts/build-wasm.sh | 3 +-- src/main.rs | 7 +++---- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 3aae6ac..b1dd74b 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -4,6 +4,6 @@ rustflags = [ "-O", "-C", "link-args=-O2 --profiling", #"-C", "link-args=-O3 --closure 1", "-C", "link-args=-sASYNCIFY -sALLOW_MEMORY_GROWTH=1", - "-C", "link-args=-sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sSDL_EMSCRIPTEN_KEYBOARD_ELEMENT -sSDL2_IMAGE_FORMATS=['png']", + "-C", "link-args=-sUSE_SDL=2 -sUSE_SDL_IMAGE=2 -sSDL2_IMAGE_FORMATS=['png']", "-C", "link-args=--preload-file assets/ -lidbfs.js", ] diff --git a/STORY.md b/STORY.md index 3e31ac9..b710426 100644 --- a/STORY.md +++ b/STORY.md @@ -39,6 +39,13 @@ Luckily though, someone else has done this before, and they fully documented it This repository has been massively helpful in getting my WebAssembly builds working. +## Key Capturing Extensions in WASM Build + +Some extensions I had installed were capturing keys. +The issue presented with some keys never being sent to the application. +To confirm, enter safe mode or switch to a different browser without said extensions. +If the issue disappears, it's because of an extension in your browser stealing keys in a way that is incompatible with the batshit insanity of Emscripten. + [code-review-video]: https://www.youtube.com/watch?v=OKs_JewEeOo [code-review-thumbnail]: https://img.youtube.com/vi/OKs_JewEeOo/hqdefault.jpg [fighting-lifetimes-1]: https://devcry.heiho.net/html/2022/20220709-rust-and-sdl2-fighting-with-lifetimes.html diff --git a/scripts/build-wasm.sh b/scripts/build-wasm.sh index d215d85..f0b95e2 100755 --- a/scripts/build-wasm.sh +++ b/scripts/build-wasm.sh @@ -1,12 +1,11 @@ #!/bin/sh -set -eu +# set -eu echo "Building WASM with Emscripten" cargo build --target=wasm32-unknown-emscripten --release echo "Copying release files to dist/" mkdir -p dist - output_folder="target/wasm32-unknown-emscripten/release" cp $output_folder/pacman.wasm dist cp $output_folder/pacman.js dist diff --git a/src/main.rs b/src/main.rs index d560c9d..e6bcbe4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,15 +17,13 @@ mod map; mod modulation; mod pacman; -#[cfg(target_os = "emscripten")] -mod emscripten; - pub fn main() { let sdl_context = sdl2::init().unwrap(); let video_subsystem = sdl_context.video().unwrap(); // Setup tracing let subscriber = tracing_subscriber::fmt() + .with_ansi(cfg!(not(target_os = "emscripten"))) .with_max_level(tracing::Level::DEBUG) .finish() .with(ErrorLayer::default()); @@ -77,6 +75,7 @@ pub fn main() { // TODO: Fix key repeat delay issues by using VecDeque for instant key repeat for event in event_pump.poll_iter() { + match event { // Handle quitting keys or window close Event::Quit { .. } @@ -146,7 +145,7 @@ pub fn main() { true }; - + loop { if !main_loop() { break;