Web: fix crash with ControlFlow::Wait|WaitUntil

This commit is contained in:
daxpedda 2024-03-02 12:15:01 +01:00
parent 944347696a
commit 7a40aa43dc
2 changed files with 3 additions and 3 deletions

View file

@ -47,6 +47,7 @@ Unreleased` header.
- **Breaking:** Removed `EventLoopBuilder::with_user_event`, the functionality is now available in `EventLoop::with_user_event`. - **Breaking:** Removed `EventLoopBuilder::with_user_event`, the functionality is now available in `EventLoop::with_user_event`.
- Add `Window::default_attributes` to get default `WindowAttributes`. - Add `Window::default_attributes` to get default `WindowAttributes`.
- `log` has been replaced with `tracing`. The old behavior can be emulated by setting the `log` feature on the `tracing` crate. - `log` has been replaced with `tracing`. The old behavior can be emulated by setting the `log` feature on the `tracing` crate.
- On Web, fix possible crash with `ControlFlow::Wait` and `ControlFlow::WaitUntil`.
# 0.29.12 # 0.29.12

View file

@ -117,9 +117,7 @@ impl Schedule {
let channel = MessageChannel::new().unwrap(); let channel = MessageChannel::new().unwrap();
let closure = Closure::new(f); let closure = Closure::new(f);
let port_1 = channel.port1(); let port_1 = channel.port1();
port_1 port_1.set_onmessage(Some(closure.as_ref().unchecked_ref()));
.add_event_listener_with_callback("message", closure.as_ref().unchecked_ref())
.expect("Failed to set message handler");
port_1.start(); port_1.start();
let port_2 = channel.port2(); let port_2 = channel.port2();
@ -178,6 +176,7 @@ impl Drop for Schedule {
} => { } => {
window.clear_timeout_with_handle(*handle); window.clear_timeout_with_handle(*handle);
port.close(); port.close();
port.set_onmessage(None);
} }
} }
} }