Document MSAA stall handling and remaining Wine acceptance checks

Describe the single COM worker, bounded queues, focus invalidation, 500 ms
result expiry, native fallback, foreground filtering, owned-popup handling,
and shutdown behavior. State the limitation that a permanently blocked
provider occupies the one worker until helper exit.

Document the event-stall regression commands and their coverage: typing and
native button feedback during provider stalls, unchanged editor state,
late-focus suppression, bounded normal shutdown, unrelated background
providers, owned popups, both architectures, and the Orca endpoint.

Distinguish the supplied October 12 reader log from the confirmed shared
helper hang path. Successful D-Bus calls and clean reader shutdown do not
establish a reader crash, and synthetic provider stalls do not establish
the cause of every live MUSHclient failure. Keep command typing, incoming
plugin output, menus, output-buffer arrows, keypad review, audible speech,
and physical braille as explicit installed-helper acceptance checks.

Validation: reviewed the documented behavior against the worker, event
thread, and fixtures; git diff --check passed. Fresh CMake configure/build,
all four CTest checks, six event-stall runs, and eight existing menu/editor/
control/list fixture runs passed. GUI checks ran sequentially on a private
dummy Xorg display because Xvfb is unavailable; live speech and physical
braille checks were not performed.
This commit is contained in:
deedra committed 2026-10-12 23:31:03 -07:00
1 parent 0c69564780
commit 27203b0512
2 files changed
+46

No files matched your search

+12
View File
@@ -237,6 +237,18 @@ contains stable comma-separated state labels decoded from the MSAA bitmask;
protected values are excluded. Readers should filter name/state changes to
their focused source and distinguish these labels from editor diagnostics.
Application-owned MSAA queries run on one separate COM worker, with bounded
pending requests and copied results. A stalled provider cannot block the
helper's menu/editor event thread or normal shutdown. Focus/foreground changes
retire previous results; event results expire after 500 ms. If focus queries
do not finish, native control feedback uses the existing bounded fallback.
Unrelated background events are rejected before querying providers; visible
popups owned by the foreground window retain their accessible event path.
A provider that never completes still occupies the one MSAA worker until
helper exit; native menus, editing, focus fallback and controller requests
remain available. No extra workers accumulate behind blocked providers.
Standard `SysListView32` controls now report the current row's text columns,
selection and position, including 32-bit installers driven by the 64-bit
helper. Wine can expose these controls only as a generic client named `List1`,