From c29afac0a7264b7a3ab2cb3880abd5ba5ad4a8b5 Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 30 Jun 2009 12:38:18 +0000 Subject: [PATCH] (svn r16700) -Fix: if allegro fails to start or fails open a window or sound card fall back to another driver --- src/music/allegro_m.cpp | 5 +++-- src/sound/allegro_s.cpp | 6 +++--- src/video/allegro_v.cpp | 6 ++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/music/allegro_m.cpp b/src/music/allegro_m.cpp index 9400e7f495..1322ca54b3 100644 --- a/src/music/allegro_m.cpp +++ b/src/music/allegro_m.cpp @@ -18,15 +18,16 @@ extern int _allegro_instance_count; const char *MusicDriver_Allegro::Start(const char * const *param) { - if (_allegro_instance_count == 0 && install_allegro(SYSTEM_AUTODETECT, &errno, NULL)) return NULL; + if (_allegro_instance_count == 0 && install_allegro(SYSTEM_AUTODETECT, &errno, NULL)) return "Failed to set up Allegro"; _allegro_instance_count++; /* Initialise the sound */ - if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) != 0) return NULL; + if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) != 0) return "Failed to set up Allegro sound"; /* Okay, there's no soundcard */ if (midi_card == MIDI_NONE) { DEBUG(driver, 0, "allegro: no midi card found"); + return "No sound card found"; } return NULL; diff --git a/src/sound/allegro_s.cpp b/src/sound/allegro_s.cpp index 977f33bc87..069e473e5f 100644 --- a/src/sound/allegro_s.cpp +++ b/src/sound/allegro_s.cpp @@ -45,16 +45,16 @@ extern int _allegro_instance_count; const char *SoundDriver_Allegro::Start(const char * const *parm) { - if (_allegro_instance_count == 0 && install_allegro(SYSTEM_AUTODETECT, &errno, NULL)) return NULL; + if (_allegro_instance_count == 0 && install_allegro(SYSTEM_AUTODETECT, &errno, NULL)) return "Failed to set up Allegro"; _allegro_instance_count++; /* Initialise the sound */ - if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) != 0) return NULL; + if (install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL) != 0) return "Failed to set up Allegro sound"; /* Okay, there's no soundcard */ if (digi_card == DIGI_NONE) { DEBUG(driver, 0, "allegro: no sound card found"); - return NULL; + return "No sound card found"; } _stream = play_audio_stream(BUFFER_SIZE, 16, true, 11025, 255, 128); diff --git a/src/video/allegro_v.cpp b/src/video/allegro_v.cpp index de0a08eed1..61ce20f133 100644 --- a/src/video/allegro_v.cpp +++ b/src/video/allegro_v.cpp @@ -404,7 +404,7 @@ int _allegro_instance_count = 0; const char *VideoDriver_Allegro::Start(const char * const *parm) { - if (_allegro_instance_count == 0 && install_allegro(SYSTEM_AUTODETECT, &errno, NULL)) return NULL; + if (_allegro_instance_count == 0 && install_allegro(SYSTEM_AUTODETECT, &errno, NULL)) return "Failed to set up Allegro"; _allegro_instance_count++; install_timer(); @@ -425,7 +425,9 @@ const char *VideoDriver_Allegro::Start(const char * const *parm) #endif GetVideoModes(); - CreateMainSurface(_cur_resolution.width, _cur_resolution.height); + if (!CreateMainSurface(_cur_resolution.width, _cur_resolution.height)) { + return "Failed to set up Allegro video"; + } MarkWholeScreenDirty(); set_close_button_callback(HandleExitGameRequest);