diff --git a/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp b/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp index 3737876c94..9c9f519473 100644 --- a/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp +++ b/src/apps/debugger/user_interface/gui/GraphicalUserInterface.cpp @@ -14,13 +14,15 @@ GraphicalUserInterface::GraphicalUserInterface() : - fTeamWindow(NULL) + fTeamWindow(NULL), + fTeamWindowMessenger(NULL) { } GraphicalUserInterface::~GraphicalUserInterface() { + delete fTeamWindowMessenger; } @@ -29,6 +31,7 @@ GraphicalUserInterface::Init(Team* team, UserInterfaceListener* listener) { try { fTeamWindow = TeamWindow::Create(team, listener); + fTeamWindowMessenger = new BMessenger(fTeamWindow); } catch (...) { // TODO: Notify the user! ERROR("Error: Failed to create team window!\n"); @@ -50,11 +53,8 @@ void GraphicalUserInterface::Terminate() { // quit window - if (fTeamWindow != NULL) { - BMessenger messenger(fTeamWindow); - if (messenger.IsValid() && messenger.LockTarget()) - fTeamWindow->Quit(); - } + if (fTeamWindowMessenger && fTeamWindowMessenger->LockTarget()) + fTeamWindow->Quit(); } diff --git a/src/apps/debugger/user_interface/gui/GraphicalUserInterface.h b/src/apps/debugger/user_interface/gui/GraphicalUserInterface.h index 5d23f27928..5c47be899b 100644 --- a/src/apps/debugger/user_interface/gui/GraphicalUserInterface.h +++ b/src/apps/debugger/user_interface/gui/GraphicalUserInterface.h @@ -9,6 +9,7 @@ #include "UserInterface.h" +class BMessenger; class TeamWindow; @@ -33,6 +34,7 @@ public: private: TeamWindow* fTeamWindow; + BMessenger* fTeamWindowMessenger; };