diff -urN -Xfreeciv/diff_ignore freeciv/client/audio.c freeciv-audio/client/audio.c --- freeciv/client/audio.c Fri May 24 09:59:05 2002 +++ freeciv-audio/client/audio.c Thu Jun 13 19:12:08 2002 @@ -80,19 +80,19 @@ } if (!found) { - freelog(LOG_ERROR, + freelog(LOG_FATAL, _("Plugin '%s' isn't available. Available are %s"), name, audio_get_all_plugin_names()); - return FALSE; + exit(EXIT_FAILURE); } if (!plugins[i].init()) { - freelog(LOG_ERROR, _("Plugin found but can't be initialized.")); + freelog(LOG_ERROR, _("Plugin %s found but can't be initialized."), name); return FALSE; } selected_plugin = i; - freelog(LOG_NORMAL, _("Plugin '%s' is now selected"), + freelog(LOG_VERBOSE, _("Plugin '%s' is now selected"), plugins[selected_plugin].name); return TRUE; } @@ -127,10 +127,30 @@ char *filename, *file_capstr; char us_capstr[] = "+soundspec"; + if (prefered_plugin_name && !strcmp(prefered_plugin_name, "none")) { + /* We explicitly choose none plugin, silently skip the code below */ + freelog(LOG_VERBOSE, _("Proceeding with sound support disabled")); + tagfile = NULL; + return; + } + if (num_plugins_used == 1) { + /* We only have the dummy plugin, skip the code but issue an advertise */ + freelog(LOG_NORMAL, _("No real audio plugin present, " + "Proceeding with sound support disabled")); + freelog(LOG_NORMAL, + _("For sound support, install either esound or SDL_mixer")); + freelog(LOG_NORMAL, + _("Esound: http://www.tux.org/~ricdude/EsounD.html")); + freelog(LOG_NORMAL, _("SDL_mixer: http://www.libsdl.org/" + "projects/SDL_mixer/index.html")); + tagfile = NULL; + return; + } if (!spec_name) { freelog(LOG_FATAL, _("No audio ruleset given!")); exit(EXIT_FAILURE); } + freelog(LOG_VERBOSE, "Initializing sound using %s...", spec_name); filename = datafilename(spec_name); if (!filename) { freelog(LOG_ERROR, _("Cannot find audio spec-file \"%s\"."), spec_name); @@ -163,20 +183,26 @@ exit(EXIT_FAILURE); } - if (prefered_plugin_name && audio_select_plugin(prefered_plugin_name)) { + if (prefered_plugin_name) { + if (!audio_select_plugin(prefered_plugin_name)) + freelog(LOG_NORMAL, _("Proceeding with sound support disabled")); return; } - if (!audio_select_plugin("esd") && !audio_select_plugin("sdl") - && !audio_select_plugin("winmm")) { - freelog(LOG_NORMAL, - _("No real audio subsystem managed to initialize!")); - freelog(LOG_NORMAL, - _("For sound support, install either esound or SDL_mixer")); - freelog(LOG_NORMAL, "Esound: http://www.tux.org/~ricdude/EsounD.html"); - freelog(LOG_NORMAL, "SDL_mixer: http://www.libsdl.org/" - "projects/SDL_mixer/index.html"); - } +#ifdef ESD + if (audio_select_plugin("esd")) return; +#endif +#ifdef SDL + if (audio_select_plugin("sdl")) return; +#endif +#ifdef WINMM + if (audio_select_plugin("winmm")) return; +#endif + freelog(LOG_ERROR, + _("No real audio subsystem managed to initialize!")); + freelog(LOG_ERROR, + _("Perhaps there is some misconfigurationg or bad permissions")); + freelog(LOG_NORMAL, _("Proceeding with sound support disabled")); } /************************************************************************** diff -urN -Xfreeciv/diff_ignore freeciv/client/civclient.c freeciv-audio/client/civclient.c --- freeciv/client/civclient.c Fri Jun 7 06:25:58 2002 +++ freeciv-audio/client/civclient.c Thu Jun 13 18:05:02 2002 @@ -206,7 +206,6 @@ boot_help_texts(); tilespec_read_toplevel(tile_set_name); /* get tile sizes etc */ - freelog(LOG_VERBOSE, "Initializing sound using %s...", sound_set_name); audio_real_init(sound_set_name, sound_plugin_name); audio_play_music("music_start", NULL);