mirror of
https://github.com/vcmi/vcmi.git
synced 2025-08-13 19:54:17 +02:00
fixed crash on quit
This commit is contained in:
@@ -105,7 +105,6 @@ static po::variables_map vm;
|
|||||||
static bool ermInteractiveMode = false; //structurize when time is right
|
static bool ermInteractiveMode = false; //structurize when time is right
|
||||||
void processCommand(const std::string &message);
|
void processCommand(const std::string &message);
|
||||||
static void setScreenRes(int w, int h, int bpp, bool fullscreen, int displayIndex, bool resetVideo=true);
|
static void setScreenRes(int w, int h, int bpp, bool fullscreen, int displayIndex, bool resetVideo=true);
|
||||||
void dispose();
|
|
||||||
void playIntro();
|
void playIntro();
|
||||||
static void mainLoop();
|
static void mainLoop();
|
||||||
|
|
||||||
@@ -980,31 +979,6 @@ void playIntro()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispose()
|
|
||||||
{
|
|
||||||
if(VLC)
|
|
||||||
{
|
|
||||||
delete VLC;
|
|
||||||
VLC = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// cleanup, mostly to remove false leaks from analyzer
|
|
||||||
if(CCS)
|
|
||||||
{
|
|
||||||
CCS->musich->release();
|
|
||||||
CCS->soundh->release();
|
|
||||||
}
|
|
||||||
CMessage::dispose();
|
|
||||||
|
|
||||||
vstd::clear_pointer(graphics);
|
|
||||||
|
|
||||||
if(console)
|
|
||||||
{
|
|
||||||
delete console; // should be removed after everything else since used by logging
|
|
||||||
console = nullptr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool checkVideoMode(int monitorIndex, int w, int h)
|
static bool checkVideoMode(int monitorIndex, int w, int h)
|
||||||
{
|
{
|
||||||
//we only check that our desired window size fits on screen
|
//we only check that our desired window size fits on screen
|
||||||
@@ -1382,9 +1356,29 @@ void handleQuit(bool ask)
|
|||||||
{
|
{
|
||||||
if(CSH->client)
|
if(CSH->client)
|
||||||
CSH->endGameplay();
|
CSH->endGameplay();
|
||||||
dispose();
|
|
||||||
vstd::clear_pointer(console);
|
GH.listInt.clear();
|
||||||
boost::this_thread::sleep(boost::posix_time::milliseconds(750));
|
GH.objsToBlit.clear();
|
||||||
|
|
||||||
|
CMM.reset();
|
||||||
|
|
||||||
|
// cleanup, mostly to remove false leaks from analyzer
|
||||||
|
if(CCS)
|
||||||
|
{
|
||||||
|
CCS->musich->release();
|
||||||
|
CCS->soundh->release();
|
||||||
|
|
||||||
|
vstd::clear_pointer(CCS);
|
||||||
|
}
|
||||||
|
CMessage::dispose();
|
||||||
|
|
||||||
|
vstd::clear_pointer(graphics);
|
||||||
|
|
||||||
|
vstd::clear_pointer(VLC);
|
||||||
|
|
||||||
|
vstd::clear_pointer(console);// should be removed after everything else since used by logging
|
||||||
|
|
||||||
|
boost::this_thread::sleep(boost::posix_time::milliseconds(750));//???
|
||||||
if(!settings["session"]["headless"].Bool())
|
if(!settings["session"]["headless"].Bool())
|
||||||
{
|
{
|
||||||
cleanupRenderer();
|
cleanupRenderer();
|
||||||
|
Reference in New Issue
Block a user