mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-08-04 07:27:26 +02:00
Fix crash on exit when multiple windows are open
Controllers would delete their Views even if they failed to pop them from the window stack. Have I mentioned that I really hate our MVC?
This commit is contained in:
@@ -71,8 +71,10 @@ ConsoleView * ConsoleController::GetView()
|
|||||||
|
|
||||||
ConsoleController::~ConsoleController()
|
ConsoleController::~ConsoleController()
|
||||||
{
|
{
|
||||||
consoleView->CloseActiveWindow();
|
|
||||||
delete consoleModel;
|
delete consoleModel;
|
||||||
delete consoleView;
|
if (consoleView->CloseActiveWindow())
|
||||||
|
{
|
||||||
|
delete consoleView;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -141,8 +141,10 @@ void LocalBrowserController::Exit()
|
|||||||
|
|
||||||
LocalBrowserController::~LocalBrowserController()
|
LocalBrowserController::~LocalBrowserController()
|
||||||
{
|
{
|
||||||
browserView->CloseActiveWindow();
|
|
||||||
delete browserModel;
|
delete browserModel;
|
||||||
delete browserView;
|
if (browserView->CloseActiveWindow())
|
||||||
|
{
|
||||||
|
delete browserView;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -39,8 +39,10 @@ void LoginController::Exit()
|
|||||||
|
|
||||||
LoginController::~LoginController()
|
LoginController::~LoginController()
|
||||||
{
|
{
|
||||||
loginView->CloseActiveWindow();
|
|
||||||
delete loginModel;
|
delete loginModel;
|
||||||
delete loginView;
|
if (loginView->CloseActiveWindow())
|
||||||
|
{
|
||||||
|
delete loginView;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -149,8 +149,10 @@ void OptionsController::Exit()
|
|||||||
|
|
||||||
OptionsController::~OptionsController()
|
OptionsController::~OptionsController()
|
||||||
{
|
{
|
||||||
view->CloseActiveWindow();
|
|
||||||
delete model;
|
delete model;
|
||||||
delete view;
|
if (view->CloseActiveWindow())
|
||||||
|
{
|
||||||
|
delete view;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -171,8 +171,10 @@ void PreviewController::Exit()
|
|||||||
|
|
||||||
PreviewController::~PreviewController()
|
PreviewController::~PreviewController()
|
||||||
{
|
{
|
||||||
previewView->CloseActiveWindow();
|
|
||||||
Client::Ref().RemoveListener(this);
|
Client::Ref().RemoveListener(this);
|
||||||
delete previewModel;
|
delete previewModel;
|
||||||
delete previewView;
|
if (previewView->CloseActiveWindow())
|
||||||
|
{
|
||||||
|
delete previewView;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -58,8 +58,10 @@ void RenderController::Exit()
|
|||||||
|
|
||||||
RenderController::~RenderController()
|
RenderController::~RenderController()
|
||||||
{
|
{
|
||||||
renderView->CloseActiveWindow();
|
|
||||||
delete renderModel;
|
delete renderModel;
|
||||||
delete renderView;
|
if (renderView->CloseActiveWindow())
|
||||||
|
{
|
||||||
|
delete renderView;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -85,9 +85,11 @@ void SearchController::Exit()
|
|||||||
SearchController::~SearchController()
|
SearchController::~SearchController()
|
||||||
{
|
{
|
||||||
delete activePreview;
|
delete activePreview;
|
||||||
searchView->CloseActiveWindow();
|
|
||||||
delete searchModel;
|
delete searchModel;
|
||||||
delete searchView;
|
if (searchView->CloseActiveWindow())
|
||||||
|
{
|
||||||
|
delete searchView;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SearchController::DoSearch(String query, bool now)
|
void SearchController::DoSearch(String query, bool now)
|
||||||
|
@@ -46,8 +46,10 @@ void TagsController::Exit()
|
|||||||
|
|
||||||
TagsController::~TagsController()
|
TagsController::~TagsController()
|
||||||
{
|
{
|
||||||
tagsView->CloseActiveWindow();
|
|
||||||
delete tagsModel;
|
delete tagsModel;
|
||||||
delete tagsView;
|
if (tagsView->CloseActiveWindow())
|
||||||
|
{
|
||||||
|
delete tagsView;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user