arcattack and Claude Opus 4.8
a1c9a71898
Join wait: non-blocking dial -- the spinner no longer stutters
...
User-reported after the waiting-screen fix: "the animation keeps hanging."
Cause: RelayDialTcp used a BLOCKING connect() -- against a down/unreachable
operator each attempt froze the window thread for the OS SYN-retry window
(seconds), so the spinner ran only during the 2s sleep between attempts.
RelayDialTcp now connects NON-blocking and select()s in 100ms slices,
pumping the message loop + repainting the waiting screen every slice (both
in-flight and between retry attempts). The success path already returned a
non-blocking socket (FIONBIO), so caller semantics are unchanged; the other
dial sites (console dial, game-socket dial) inherit the smooth behavior.
Verified: 4 window captures at 400ms intervals during a dead-host dial all
differ in the spinner region (uniform diff energy == continuous animation)
and IsHungAppWindow reads false on every sample.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 08:24:30 -05:00
..
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-19 10:39:43 -05:00
2026-07-19 10:39:43 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-12 20:04:29 -05:00
2026-07-20 14:43:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-16 11:59:39 -05:00
2026-07-16 11:59:39 -05:00
2026-07-05 21:03:40 -05:00
2026-07-20 14:51:35 -05:00
2026-07-20 14:51:35 -05:00
2026-07-16 10:43:38 -05:00
2026-07-20 14:51:54 -05:00
2026-07-20 14:51:35 -05:00
2026-07-16 11:04:34 -05:00
2026-07-05 21:03:40 -05:00
2026-07-20 14:51:35 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-20 08:35:55 -05:00
2026-07-17 22:11:16 -05:00
2026-07-19 10:39:43 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-12 17:24:15 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-20 15:59:37 -05:00
2026-07-17 22:21:22 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-22 08:24:30 -05:00
2026-07-18 12:11:03 -05:00
2026-07-20 08:35:55 -05:00
2026-07-17 22:11:16 -05:00
2026-07-20 07:50:44 -05:00
2026-07-17 22:21:22 -05:00
2026-07-21 09:31:52 -05:00
2026-07-20 08:35:55 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-18 19:06:26 -05:00
2026-07-17 22:21:22 -05:00
2026-07-17 22:11:16 -05:00
2026-07-17 22:11:16 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-18 00:03:17 -05:00
2026-07-18 00:03:17 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-20 21:35:51 -05:00
2026-07-20 20:39:34 -05:00
2026-07-22 08:16:13 -05:00
2026-07-18 16:32:23 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-20 20:39:34 -05:00
2026-07-20 14:51:54 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-05 21:03:40 -05:00
2026-07-16 11:04:34 -05:00