File diff r7169:b87d36998a2d → r7170:38b143754b40
src/openttd.cpp
Show inline comments
 
@@ -41,7 +41,6 @@
 
#include "sound.h"
 
#include "economy.h"
 
#include "fileio.h"
 
#include "hal.h"
 
#include "airport.h"
 
#include "aircraft.h"
 
#include "console.h"
 
@@ -65,6 +64,9 @@
 
#include "player_face.h"
 
#include "group.h"
 
#include "blitter/factory.hpp"
 
#include "sound/sound_driver.hpp"
 
#include "music/music_driver.hpp"
 
#include "video/video_driver.hpp"
 

	
 
#include "bridge_map.h"
 
#include "clear_map.h"
 
@@ -103,7 +105,7 @@ void CDECL error(const char *s, ...)
 
	va_end(va);
 

	
 
	ShowOSErrorBox(buf);
 
	if (_video_driver != NULL) _video_driver->stop();
 
	if (_video_driver != NULL) _video_driver->Stop();
 

	
 
	assert(0);
 
	exit(1);
 
@@ -186,7 +188,8 @@ static void showhelp()
 
		lastof(buf)
 
	);
 

	
 
	p = GetDriverList(p, lastof(buf));
 
	/* List the drivers */
 
	p = VideoDriverFactoryBase::GetDriversInfo(p, lastof(buf));
 

	
 
	/* List the blitters */
 
	p = BlitterFactoryBase::GetBlittersInfo(p, lastof(buf));
 
@@ -342,7 +345,7 @@ static void LoadIntroGame()
 
	MarkWholeScreenDirty();
 

	
 
	/* Play main theme */
 
	if (_music_driver->is_song_playing()) ResetMusic();
 
	if (_music_driver->IsSongPlaying()) ResetMusic();
 
}
 

	
 
#if defined(UNIX) && !defined(__MORPHOS__)
 
@@ -514,16 +517,36 @@ int ttd_main(int argc, char *argv[])
 
	DEBUG(misc, 1, "Loading blitter '%s'...", blitter);
 
	if (BlitterFactoryBase::SelectBlitter(blitter) == NULL)
 
		error("Failed to select requested blitter '%s'; does it exist?", blitter);
 

	
 
	DEBUG(driver, 1, "Loading drivers...");
 
	LoadDriver(SOUND_DRIVER, _ini_sounddriver);
 
	LoadDriver(MUSIC_DRIVER, _ini_musicdriver);
 
	LoadDriver(VIDEO_DRIVER, _ini_videodriver); // load video last, to prevent an empty window while sound and music loads
 

	
 
	_sound_driver = (SoundDriver*)SoundDriverFactoryBase::SelectDriver(_ini_sounddriver, Driver::DT_SOUND);
 
	if (_sound_driver == NULL) {
 
		StrEmpty(_ini_sounddriver) ?
 
			error("Failed to autoprobe sound driver") :
 
			error("Failed to select requested sound driver '%s'", _ini_sounddriver);
 
	}
 

	
 
	_music_driver = (MusicDriver*)MusicDriverFactoryBase::SelectDriver(_ini_musicdriver, Driver::DT_MUSIC);
 
	if (_music_driver == NULL) {
 
		StrEmpty(_ini_musicdriver) ?
 
			error("Failed to autoprobe music driver") :
 
			error("Failed to select requested music driver '%s'", _ini_musicdriver);
 
	}
 

	
 
	_video_driver = (VideoDriver*)VideoDriverFactoryBase::SelectDriver(_ini_videodriver, Driver::DT_VIDEO);
 
	if (_video_driver == NULL) {
 
		StrEmpty(_ini_videodriver) ?
 
			error("Failed to autoprobe video driver") :
 
			error("Failed to select requested video driver '%s'", _ini_videodriver);
 
	}
 

	
 
	_savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING;
 
	/* Initialize the zoom level of the screen to normal */
 
	_screen.zoom = ZOOM_LVL_NORMAL;
 

	
 
	/* restore saved music volume */
 
	_music_driver->set_volume(msf.music_vol);
 
	_music_driver->SetVolume(msf.music_vol);
 

	
 
	NetworkStartUp(); // initialize network-core
 

	
 
@@ -594,16 +617,16 @@ int ttd_main(int argc, char *argv[])
 
	}
 
#endif /* ENABLE_NETWORK */
 

	
 
	_video_driver->main_loop();
 
	_video_driver->MainLoop();
 

	
 
	WaitTillSaved();
 
	IConsoleFree();
 

	
 
	if (_network_available) NetworkShutDown(); // Shut down the network and close any open connections
 

	
 
	_video_driver->stop();
 
	_music_driver->stop();
 
	_sound_driver->stop();
 
	_video_driver->Stop();
 
	_music_driver->Stop();
 
	_sound_driver->Stop();
 

	
 
	/* only save config if we have to */
 
	if (save_config) {
 
@@ -2097,8 +2120,3 @@ void ReloadNewGRFData()
 
	/* redraw the whole screen */
 
	MarkWholeScreenDirty();
 
}
 

	
 
HalMusicDriver *_music_driver;
 
HalSoundDriver *_sound_driver;
 
HalVideoDriver *_video_driver;