aboutsummaryrefslogtreecommitdiff
path: root/core/sys
diff options
context:
space:
mode:
authorWison Ye <wisonye@gmail.com>2025-03-22 17:52:43 +1300
committerWison Ye <wisonye@gmail.com>2025-03-22 17:52:43 +1300
commit17a01dcebf71ffdd85557e80aa8de33a31f9a825 (patch)
tree18617234124e9d8f9edf4bf92a8a2c3a32b20e14 /core/sys
parent01e81fe59739e76cfeba1622efafb38f4aa431eb (diff)
parente4bc9677af62c74bb23f4c00d82d2a685ce64e50 (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'core/sys')
-rw-r--r--core/sys/posix/signal.odin2
-rw-r--r--core/sys/wasm/js/events.odin16
-rw-r--r--core/sys/wasm/js/odin.js11
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;