[Change] Disable sound and music if fail to initiailize. [Add] Warn if SDL_Mixer version differs.

This commit is contained in:
Allanis 2013-11-23 02:23:13 +00:00
parent e5d50254d2
commit b831e311e6
2 changed files with 41 additions and 18 deletions

View File

@ -587,7 +587,7 @@ static void print_SDLversion(void) {
/* Check if major/minor version differ. */ /* Check if major/minor version differ. */
if((linked->major*100 + linked->minor) > compiled.major*100 + compiled.minor) if((linked->major*100 + linked->minor) > compiled.major*100 + compiled.minor)
WARN("SDL is newer than compiled version."); WARN("SDL is newer than compiled version.");
if((linked->major*100 + linked->monor) < compiled.major*100 + compiled.minor) if((linked->major*100 + linked->minor) < compiled.major*100 + compiled.minor)
WARN("SDL is older than compiled version."); WARN("SDL is older than compiled version.");
} }

View File

@ -78,6 +78,7 @@ static alVoice* voice_active = NULL; /**< Active voices. */
static alVoice* voice_pool = NULL; /**< Pool of free voices. */ static alVoice* voice_pool = NULL; /**< Pool of free voices. */
/* General prototypes. */ /* General prototypes. */
static void print_MixerVersion(void);
static int sound_makeList(void); static int sound_makeList(void);
static Mix_Chunk* sound_load(char* filename); static Mix_Chunk* sound_load(char* filename);
static void sound_free(alSound* snd); static void sound_free(alSound* snd);
@ -94,34 +95,21 @@ static alVoice* voice_get(int id);
* @return 0 on success. * @return 0 on success.
*/ */
int sound_init(void) { int sound_init(void) {
int frequency;
Uint16 format;
int channels;
SDL_version compile_version;
const SDL_version* link_version;
char device[PATH_MAX];
if(sound_disabled) return 0; if(sound_disabled) return 0;
SDL_InitSubSystem(SDL_INIT_AUDIO); SDL_InitSubSystem(SDL_INIT_AUDIO);
if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024) < 0) { if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024) < 0) {
WARN("Opening Audio: %s", Mix_GetError()); WARN("Opening Audio: %s", Mix_GetError());
DEBUG();
sound_disabled = 1; /* Just disable sound then. */
music_disabled = 1;
return -1; return -1;
} }
Mix_AllocateChannels(SOUND_CHANNEL_MAX); Mix_AllocateChannels(SOUND_CHANNEL_MAX);
/* Debug magic. */ /* Debug magic. */
Mix_QuerySpec(&frequency, &format, &channels); print_MixerVersion();
MIX_VERSION(&compile_version);
link_version = Mix_Linked_Version();
SDL_AudioDriverName(device, PATH_MAX);
DEBUG("SDL_Mixer: %d.%d.%d [compiled: %d.%d.%d]",
compile_version.major, compile_version.minor, compile_version.patch,
link_version->major, link_version->minor, link_version->patch);
DEBUG("Driver: %s", device);
DEBUG("Format: %d HZ %s", frequency, (channels == 2) ? "Sterio" : "Mono");
DEBUG();
/* Load up all the sounds. */ /* Load up all the sounds. */
sound_makeList(); sound_makeList();
@ -139,6 +127,41 @@ int sound_init(void) {
return 0; return 0;
} }
/**
* @fn static void print_MixerVersion(void)
*
* @brief Print the current and compiled SDL_Mixer versions.
*/
static void print_MixerVersion(void) {
int frequency;
Uint16 format;
int channels;
SDL_version compiled;
const SDL_version* linked;
char device[PATH_MAX];
/* Query stuff. */
Mix_QuerySpec(&frequency, &format, &channels);
MIX_VERSION(&compiled);
linked = Mix_Linked_Version();
SDL_AudioDriverName(device, PATH_MAX);
/* Version itself. */
DEBUG("SDL_Mixer: %d.%d.%d [compiled: %d.%d.%d]",
compiled.major, compiled.minor, compiled.patch,
linked->major, linked->minor, linked->patch);
/* Check if major/minor version differ. */
if((linked->major*100 + linked->minor) > compiled.major*100 + compiled.minor)
WARN("SDL_Mixer is newer than compiled version.");
if((linked->major*100 + linked->minor) < compiled.major*100 + compiled.minor)
WARN("SDL_Mixer is older than compiled version.");
/* Print other debug info. */
DEBUG("Driver: %s", device);
DEBUG("Format: %d Hz %s", frequency, (channels == 2) ? "Sterio" : "Mono");
DEBUG();
}
/** /**
* @fn void sound_exit(void) * @fn void sound_exit(void)
* *