- Re-gzipping ejected images is based solely on the file extension and not the actual file stream contents
- Read/write disk images with extension ".gz" are re-gzipped in-place upon ejection
- Read/write disk images without extension ".gz" are not changed upon ejection
- Read-only disk images maintain current behavior (no modifications performed at all)
- 'was_gzipped' state is persisted in .apple2.json preferences
- This removes all file-renaming codepaths at the cost of temporarily nonconformance to naming convesion (e.g., disk
images inserted read/write are still called 'foo.dsk.gz' although they are not compressed)
- Unclean shutdown of emulator leaves any disk images that were inserted read/write in their non-gzipped state
(regardless of file name extension) on disk until emulator restarted and disk images explictly ejected or clean
shudown. App removal after unclean shutdown will potentially leave mis-named disk images lingering.
- Emulator will handle edge cases of non-gzipped disk images with '.gz' extension and gzipped disk images without
'.gz' extension
- Push path opening responsibility out of disk6 API in favor of using file descriptors
- Improves handling of readonly gzipped disk images (now data is read without gunzipping or mmap()ing the file)
- Currently represents an API-breaking change for macOS, iOS, GNU/Linux desktop ports (but should be easy to fix)
- Eliminates a whole bunch of boilerplate setter/getter code in various places
- Accesses preferences directly from JSON data through custom json_parse.h API
- Improves code locality for Java menus/settings
- Previously we would start the CPU thread and then insert, which has been a long standing race condition, but
possibly better exposed since the recent disk.c rephactor to use mmap I/O
- This directly manifested on a Kindle Fire 1st Gen as a crash, and, anecdotally on other devices as a "stalled"
disk read requiring a reboot of the virtual machine. Yay for crappy devices helping to expose crappy code! (git
blame me). =P
- CLI is still super useful for GDB debugging and running emulator testcases
- Possibly this maintenance of two build systems can all go away when Android Studio has better NDK support