X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fsystem.c;h=37ca4841276a290a2ccbc7f54c0bbefbc8ad1180;hb=10c48f0b3b2cf27451ddf355a3f72ee5c169eae4;hp=cdf66b33dc05efb823ded0623cf4e44626314329;hpb=ab9b68feafe2cf6012533e5ad0581e6b9d423959;p=rocksndiamonds.git diff --git a/src/system.c b/src/system.c index cdf66b33..37ca4841 100644 --- a/src/system.c +++ b/src/system.c @@ -234,33 +234,45 @@ inline void ChangeVideoModeIfNeeded(void) /* audio functions */ /* ========================================================================= */ -inline struct AudioSystemInfo InitAudio(void) +inline boolean OpenAudio(struct AudioSystemInfo *audio) { - struct AudioSystemInfo audio; - - audio.sound_available = FALSE; - audio.loops_available = FALSE; - audio.soundserver_pipe[0] = audio.soundserver_pipe[1] = 0; - audio.soundserver_pid = 0; - audio.device_fd = 0; + audio->sound_available = FALSE; + audio->loops_available = FALSE; + audio->soundserver_pipe[0] = audio->soundserver_pipe[1] = 0; + audio->soundserver_pid = 0; + audio->device_fd = 0; #if defined(TARGET_SDL) - if (SDLInitAudio()) + if (SDLOpenAudio()) { - audio.sound_available = TRUE; - audio.loops_available = TRUE; + audio->sound_available = TRUE; + audio->loops_available = TRUE; } #elif defined(PLATFORM_MSDOS) - if (MSDOSInitAudio()) + if (MSDOSOpenAudio()) { - audio.sound_available = TRUE; - audio.loops_available = TRUE; + audio->sound_available = TRUE; + audio->loops_available = TRUE; } #elif defined(PLATFORM_UNIX) - UnixInitAudio(&audio); + UnixOpenAudio(audio); +#endif + + return audio->sound_available; +} + +inline void CloseAudio(struct AudioSystemInfo *audio) +{ +#if defined(TARGET_SDL) + SDLCloseAudio(); +#elif defined(PLATFORM_MSDOS) + MSDOSCloseAudio(); +#elif defined(PLATFORM_UNIX) + UnixCloseAudio(audio); #endif - return audio; + audio->sound_available = FALSE; + audio->loops_available = FALSE; }