Henrik Rydgård and Claude Opus 5.5
f6f9a00eb7
UI: Move file I/O off the render thread in a few screens
...
On Android the render thread runs the UI, and surfaceDestroyed waits for
it, so slow storage (SAF especially) there stutters and can become an ANR.
- Store: only check whether the game is installed when an install or
uninstall finishes, not every frame.
- Savedata: read the modification time with SIZE on the GameInfo worker.
The popup asked for it every frame, and each button on first draw.
- FirmwareScreen: scan the NAND, and erase it, on a worker thread. It
rescanned on every RecreateViews, which is after every popup.
- GameScreen: look up the installed update, plugins and what the firmware
can play on a worker thread. They ran on every RecreateViews, which
happens as each piece of game info arrives.
- LaunchFile: wait only for the file type, and for PARAM.SFO just in the
cases that use it.
Also add --start-screen=firmware.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-10-30 12:01:36 +01:00
..
2026-10-26 16:36:49 +01:00
2026-10-26 23:01:21 +01:00
2026-10-22 10:55:30 +02:00
2026-07-26 10:22:00 +02:00
2026-10-21 19:47:51 +02:00
2026-10-12 14:32:59 +02:00
2026-09-18 14:08:08 -06:00
2026-10-25 10:28:40 +01:00
2026-09-04 13:10:54 -06:00
2026-10-26 12:59:33 +01:00
2026-10-25 10:28:40 +01:00
2026-10-24 16:12:01 +02:00
2026-10-24 14:01:58 +02:00
2026-10-24 16:12:01 +02:00
2026-10-24 14:01:58 +02:00
2026-10-18 13:40:18 +02:00
2026-10-26 11:39:48 +01:00
2026-10-27 12:16:25 +01:00
2026-10-25 16:01:35 +01:00
2026-10-26 16:20:03 +01:00
2026-10-25 15:26:58 +01:00
2026-08-07 08:49:29 +02:00
2026-10-26 23:42:20 +01:00
2026-10-24 16:12:01 +02:00
2026-10-27 12:16:25 +01:00
2026-10-25 15:26:58 +01:00
2026-10-27 09:23:57 +01:00
2026-10-26 11:39:48 +01:00
2026-10-30 12:01:36 +01:00
2026-10-30 12:01:36 +01:00
2026-10-28 09:56:48 +01:00
2026-10-19 11:36:30 +02:00
2026-10-30 12:01:36 +01:00
2026-10-30 12:01:36 +01:00
2026-10-26 23:08:25 +01:00
2026-10-19 16:01:53 +02:00
2026-10-26 09:39:49 +01:00
2026-10-26 09:39:49 +01:00
2026-10-30 12:01:36 +01:00
2026-10-30 12:01:36 +01:00
2026-10-26 11:36:59 +01:00
2026-10-26 11:36:59 +01:00
2026-10-26 15:04:00 +01:00
2026-10-26 15:04:00 +01:00
2026-10-27 09:32:52 +01:00
2026-10-27 09:32:52 +01:00
2026-10-26 17:04:20 +01:00
2026-10-26 17:04:20 +01:00
2026-10-13 12:13:42 +02:00
2026-09-10 15:52:53 -06:00
2026-10-26 17:04:20 +01:00
2026-10-20 09:52:17 +02:00
2026-10-25 15:26:58 +01:00
2026-05-31 22:05:53 +03:00
2026-05-31 22:05:53 +03:00
2026-10-30 12:01:36 +01:00
2026-10-28 09:56:48 +01:00
2026-10-26 16:20:03 +01:00
2026-10-12 14:32:59 +02:00
2026-10-25 10:28:40 +01:00
2026-10-24 16:12:01 +02:00
2026-10-25 15:26:58 +01:00
2026-10-25 15:26:58 +01:00
2026-10-27 12:17:31 +01:00
2026-10-27 21:50:20 +01:00
2026-06-24 23:04:17 +02:00
2026-10-26 23:08:25 +01:00
2026-10-26 11:49:44 +01:00
2026-10-13 12:13:42 +02:00
2026-10-26 23:01:21 +01:00
2026-10-25 15:26:58 +01:00
2026-08-07 14:30:36 +02:00
2026-10-27 21:49:06 +01:00
2026-10-25 15:26:58 +01:00
2026-10-25 10:28:40 +01:00
2026-10-25 15:26:58 +01:00
2026-10-26 23:01:21 +01:00
2026-10-26 23:01:21 +01:00
2026-10-26 23:01:21 +01:00
2026-10-25 15:26:58 +01:00
2026-10-11 21:52:38 +02:00
2026-10-10 16:06:55 +02:00
2026-10-25 10:28:40 +01:00
2026-10-30 12:01:36 +01:00
2026-10-22 10:55:30 +02:00
2026-10-26 23:01:21 +01:00
2026-10-25 15:26:58 +01:00
2026-10-25 15:26:58 +01:00
2026-10-25 15:26:58 +01:00
2026-10-29 15:28:37 +01:00
2026-10-26 16:20:03 +01:00
2026-10-26 09:39:49 +01:00
2026-10-26 09:39:49 +01:00
2026-10-24 14:14:17 +02:00
2026-10-26 12:59:33 +01:00
2026-10-26 12:59:33 +01:00
2026-10-26 23:01:21 +01:00
2026-10-16 20:44:05 +02:00
2026-10-16 20:44:04 +02:00