design-b D-1: bump wxwidgets (gating + legacy twins deleted) + shim cleanup
wxwidgets c44c684f7d (D-1c: scheduler lanes unconditional,
wxWasmMailboxEnabled gone, fail-fast shim assert) + 24843897e8 (D-1d:
startModal / wxWasmRunNestedLoop / popup pump / resolver stacks / bare
emscripten_async_call timer entries deleted).
pcbjam side of D-1d: the scheduler shim's delivery-tick error path uses
wait-registry containment (resolveTopWait nested+modal) instead of the
deleted _wxNestedLoopExit stack, and diagnostics.js tracks modal
lifecycle via pendingWaits('modal') instead of the deleted
Module._endModal hook.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TEHGiiXMShNXbBr7gSJ7iz
This commit is contained in:
parent
4906b9fb56
commit
de27ecf327
3 changed files with 19 additions and 19 deletions
|
|
@ -63,8 +63,11 @@ if (typeof Asyncify !== "undefined" && !globalThis.__wxSchedulerInstalled) {
|
|||
} catch (e) {
|
||||
self._tickArmed = false;
|
||||
if (Module["_wx_dispatch_abandon"]) Module["_wx_dispatch_abandon"]();
|
||||
var exits = Module["_wxNestedLoopExit"];
|
||||
if (exits && exits.length) (exits.pop())();
|
||||
// Same containment as the top-level tick's error path (evtloop.cpp):
|
||||
// a throwing handler must not leave a parked quasi-modal unresolved.
|
||||
// No-ops when no such wait is open (5101 = wxID_CANCEL).
|
||||
self.resolveTopWait('nested', 0);
|
||||
self.resolveTopWait('modal', 5101);
|
||||
throw e;
|
||||
}
|
||||
if (self.mailbox.length > 0) {
|
||||
|
|
@ -158,7 +161,7 @@ if (typeof Asyncify !== "undefined" && !globalThis.__wxSchedulerInstalled) {
|
|||
// pre-resolves the promise — yieldUntil then returns immediately. Per-kind
|
||||
// LIFO stacks give wx modal/nested semantics ("innermost first") without
|
||||
// the legacy per-wait resolver stacks (_wxModalResolvers /
|
||||
// _wxNestedLoopExit), which die on scheduler builds. Resolution flows
|
||||
// _wxNestedLoopExit — deleted at doc 20 D-1). Resolution flows
|
||||
// through the S2 deferred-wake law automatically: resolving a wait wakes
|
||||
// its parked sleep via the wrapped handleSleep path.
|
||||
waits: new Map(), // token → {kind, promise, resolve, resolved}
|
||||
|
|
|
|||
Loading…
Reference in a new issue