You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
To trap the guest OS SDL applications, virtual memory translation should
be handled when accessing the bidirectional event queues in
syscall_sdl.c. Additionally, when using the guest OS, the SDL
application might be launched and terminated multiple times. To enhance
the user experience, it is heuristic to properly handle three main types
of exits:
1, SDL application built-in exit: The source code of the SDL application
should be modified to call the syscall_exit(syscall number: 93)
somewhere when executing cleanup routine before exit().
2. Ctrl-c (SIGINT) exit: Detect the ctrl-c keycode.
3. SDL window Quit event: The source code of the SDL application
should be modified to call the syscall_exit(syscall number: 93) when
receiving SDL window Quit event.
The main reason for handling these three types of exits is that
SDL2_Mixer may malfunction if not properly initialized and destroyed, as
it runs on the host side not on the guest side. Additionally, when
terminating an SDL application in the guest OS, the previous SDL window
should be closed.
Moreover, the default audio backend of SDL2_Mixer(downloadable from brew
or Linux distro pkg managers), FluidSynth, occasionally generates the
warning: "fluidsynth: warning: Ringbuffer full, try
increasing synth.polyphony!" This issue causes the audio to hang,
leading to an unstable playback experience. Thus, dropping FluidSynth in
favor of the Timidity backend, which provides a stable audio playback
experience.
Known issue: Calling SDL_DestroyWindow() on macOS does not close the
previous SDL window.
Close: #510
0 commit comments