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:
parent
eea0c54a36
commit
c2f8a7df25
@ -71,8 +71,10 @@ ConsoleView * ConsoleController::GetView()
|
||||
|
||||
ConsoleController::~ConsoleController()
|
||||
{
|
||||
consoleView->CloseActiveWindow();
|
||||
delete consoleModel;
|
||||
delete consoleView;
|
||||
if (consoleView->CloseActiveWindow())
|
||||
{
|
||||
delete consoleView;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -141,8 +141,10 @@ void LocalBrowserController::Exit()
|
||||
|
||||
LocalBrowserController::~LocalBrowserController()
|
||||
{
|
||||
browserView->CloseActiveWindow();
|
||||
delete browserModel;
|
||||
delete browserView;
|
||||
if (browserView->CloseActiveWindow())
|
||||
{
|
||||
delete browserView;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -39,8 +39,10 @@ void LoginController::Exit()
|
||||
|
||||
LoginController::~LoginController()
|
||||
{
|
||||
loginView->CloseActiveWindow();
|
||||
delete loginModel;
|
||||
delete loginView;
|
||||
if (loginView->CloseActiveWindow())
|
||||
{
|
||||
delete loginView;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -149,8 +149,10 @@ void OptionsController::Exit()
|
||||
|
||||
OptionsController::~OptionsController()
|
||||
{
|
||||
view->CloseActiveWindow();
|
||||
delete model;
|
||||
delete view;
|
||||
if (view->CloseActiveWindow())
|
||||
{
|
||||
delete view;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -171,8 +171,10 @@ void PreviewController::Exit()
|
||||
|
||||
PreviewController::~PreviewController()
|
||||
{
|
||||
previewView->CloseActiveWindow();
|
||||
Client::Ref().RemoveListener(this);
|
||||
delete previewModel;
|
||||
delete previewView;
|
||||
if (previewView->CloseActiveWindow())
|
||||
{
|
||||
delete previewView;
|
||||
}
|
||||
}
|
||||
|
@ -58,8 +58,10 @@ void RenderController::Exit()
|
||||
|
||||
RenderController::~RenderController()
|
||||
{
|
||||
renderView->CloseActiveWindow();
|
||||
delete renderModel;
|
||||
delete renderView;
|
||||
if (renderView->CloseActiveWindow())
|
||||
{
|
||||
delete renderView;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -85,9 +85,11 @@ void SearchController::Exit()
|
||||
SearchController::~SearchController()
|
||||
{
|
||||
delete activePreview;
|
||||
searchView->CloseActiveWindow();
|
||||
delete searchModel;
|
||||
delete searchView;
|
||||
if (searchView->CloseActiveWindow())
|
||||
{
|
||||
delete searchView;
|
||||
}
|
||||
}
|
||||
|
||||
void SearchController::DoSearch(String query, bool now)
|
||||
|
@ -46,8 +46,10 @@ void TagsController::Exit()
|
||||
|
||||
TagsController::~TagsController()
|
||||
{
|
||||
tagsView->CloseActiveWindow();
|
||||
delete tagsModel;
|
||||
delete tagsView;
|
||||
if (tagsView->CloseActiveWindow())
|
||||
{
|
||||
delete tagsView;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user