diff options
| author | Wison Ye <wisonye@gmail.com> | 2025-03-22 17:52:43 +1300 |
|---|---|---|
| committer | Wison Ye <wisonye@gmail.com> | 2025-03-22 17:52:43 +1300 |
| commit | 17a01dcebf71ffdd85557e80aa8de33a31f9a825 (patch) | |
| tree | 18617234124e9d8f9edf4bf92a8a2c3a32b20e14 /core/sys | |
| parent | 01e81fe59739e76cfeba1622efafb38f4aa431eb (diff) | |
| parent | e4bc9677af62c74bb23f4c00d82d2a685ce64e50 (diff) | |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'core/sys')
| -rw-r--r-- | core/sys/posix/signal.odin | 2 | ||||
| -rw-r--r-- | core/sys/wasm/js/events.odin | 16 | ||||
| -rw-r--r-- | core/sys/wasm/js/odin.js | 11 |
3 files changed, 18 insertions, 11 deletions
diff --git a/core/sys/posix/signal.odin b/core/sys/posix/signal.odin index c7e2cc09b..d2f737946 100644 --- a/core/sys/posix/signal.odin +++ b/core/sys/posix/signal.odin @@ -565,7 +565,7 @@ when ODIN_OS == .Darwin { SS_ONSTACK :: 0x0001 SS_DISABLE :: 0x0004 - when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm32 { + when ODIN_ARCH == .arm64 || ODIN_ARCH == .arm32 { MINSIGSTKSZ :: 1024 * 4 } else when ODIN_ARCH == .amd64 || ODIN_ARCH == .i386 { MINSIGSTKSZ :: 512 * 4 diff --git a/core/sys/wasm/js/events.odin b/core/sys/wasm/js/events.odin index d217f57e6..37a6e6c35 100644 --- a/core/sys/wasm/js/events.odin +++ b/core/sys/wasm/js/events.odin @@ -374,16 +374,16 @@ remove_window_event_listener :: proc(kind: Event_Kind, user_data: rawptr, callba } remove_event_listener_from_event :: proc(e: Event) -> bool { - from_use_capture_false: bool - from_use_capture_true: bool + from_use_capture_false: bool + from_use_capture_true: bool if e.id == "" { - from_use_capture_false = remove_window_event_listener(e.kind, e.user_data, e.callback, false) - from_use_capture_true = remove_window_event_listener(e.kind, e.user_data, e.callback, true) + from_use_capture_false = remove_window_event_listener(e.kind, e.user_data, e.callback, false) + from_use_capture_true = remove_window_event_listener(e.kind, e.user_data, e.callback, true) } else { - from_use_capture_false = remove_event_listener(e.id, e.kind, e.user_data, e.callback, false) - from_use_capture_true = remove_event_listener(e.id, e.kind, e.user_data, e.callback, true) - } - return from_use_capture_false || from_use_capture_true + from_use_capture_false = remove_event_listener(e.id, e.kind, e.user_data, e.callback, false) + from_use_capture_true = remove_event_listener(e.id, e.kind, e.user_data, e.callback, true) + } + return from_use_capture_false || from_use_capture_true } add_custom_event_listener :: proc(id: string, name: string, user_data: rawptr, callback: proc(e: Event), use_capture := false) -> bool { diff --git a/core/sys/wasm/js/odin.js b/core/sys/wasm/js/odin.js index 1599aa4fe..b3a49523b 100644 --- a/core/sys/wasm/js/odin.js +++ b/core/sys/wasm/js/odin.js @@ -1662,6 +1662,10 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement, memory) { if (element == undefined) { return false; } + let key = listener_key(id, name, data, callback, !!use_capture); + if (wasmMemoryInterface.listenerMap.has(key)) { + return false; + } let listener = (e) => { let event_data = {}; @@ -1672,7 +1676,6 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement, memory) { onEventReceived(event_data, data, callback); }; - let key = listener_key(id, name, data, callback, !!use_capture); wasmMemoryInterface.listenerMap.set(key, listener); element.addEventListener(name, listener, !!use_capture); return true; @@ -1681,6 +1684,11 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement, memory) { add_window_event_listener: (name_ptr, name_len, name_code, data, callback, use_capture) => { let name = wasmMemoryInterface.loadString(name_ptr, name_len); let element = window; + let key = listener_key('window', name, data, callback, !!use_capture); + if (wasmMemoryInterface.listenerMap.has(key)) { + return false; + } + let listener = (e) => { let event_data = {}; event_data.id_ptr = 0; @@ -1690,7 +1698,6 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement, memory) { onEventReceived(event_data, data, callback); }; - let key = listener_key('window', name, data, callback, !!use_capture); wasmMemoryInterface.listenerMap.set(key, listener); element.addEventListener(name, listener, !!use_capture); return true; |