mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-08-17 12:18:31 -07:00
fix(dictionary): stop character dictionary IO from blocking the main process
Generating and importing a large character dictionary froze the whole app long enough for the compositor to raise its application-not- responding dialog over the player. Multi-hundred-MB snapshot JSONs and the merged archive were read, written, and zipped synchronously on the main process, and the character image / name-candidate caches re-read every cached snapshot synchronously inside a lookup whenever the snapshot directory changed. - snapshot reads/writes are async; writes stream in slices and rename into place so a crash or concurrent writer cannot tear a snapshot - buildDictionaryZip yields between ~8MB slices and CRC32 uses the native zlib implementation - the image and name-candidate lookup caches rebuild in the background and serve the previous index while the rebuild runs Worst main-thread stall over a 1.4GB snapshot set drops from 8s+ to under 700ms.
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
type: fixed
|
||||
area: dictionary
|
||||
|
||||
- Character dictionary generation, merged rebuilds, and imports no longer freeze the app (and trigger the compositor's "application not responding" dialog) on large dictionaries; snapshot reads/writes, archive building, and the character image/name lookup caches now do their heavy work off the UI's critical path.
|
||||
- Desktop progress notifications now update in place on Linux AppImage installs too: the AppImage's bundled libraries broke the system notify-send helper, which silently forced the flickering close-and-reopen notification fallback.
|
||||
Reference in New Issue
Block a user