diff --git a/src/apps/debugger/MessageCodes.h b/src/apps/debugger/MessageCodes.h index 89604a8f6a..6d08b840d1 100644 --- a/src/apps/debugger/MessageCodes.h +++ b/src/apps/debugger/MessageCodes.h @@ -31,6 +31,7 @@ enum { MSG_SET_CUSTOM_SIGNAL_DISPOSITION = 'scsd', MSG_REMOVE_CUSTOM_SIGNAL_DISPOSITION = 'rcsd', + MSG_TEAM_RENAMED = 'tera', MSG_THREAD_STATE_CHANGED = 'tsch', MSG_THREAD_CPU_STATE_CHANGED = 'tcsc', MSG_THREAD_STACK_TRACE_CHANGED = 'tstc', diff --git a/src/apps/debugger/model/Team.cpp b/src/apps/debugger/model/Team.cpp index 58c60a7123..73ad3bcc6a 100644 --- a/src/apps/debugger/model/Team.cpp +++ b/src/apps/debugger/model/Team.cpp @@ -120,6 +120,7 @@ void Team::SetName(const BString& name) { fName = name; + _NotifyTeamRenamed(); } @@ -862,6 +863,16 @@ Team::NotifyMemoryChanged(target_addr_t address, target_size_t size) } +void +Team::_NotifyTeamRenamed() +{ + for (ListenerList::Iterator it = fListeners.GetIterator(); + Listener* listener = it.Next();) { + listener->TeamRenamed(Event(TEAM_EVENT_TEAM_RENAMED, this)); + } +} + + void Team::_NotifyThreadAdded(Thread* thread) { @@ -1067,6 +1078,12 @@ Team::Listener::~Listener() } +void +Team::Listener::TeamRenamed(const Team::Event& event) +{ +} + + void Team::Listener::ThreadAdded(const Team::ThreadEvent& event) { diff --git a/src/apps/debugger/model/Team.h b/src/apps/debugger/model/Team.h index d2620e9647..a5ea092745 100644 --- a/src/apps/debugger/model/Team.h +++ b/src/apps/debugger/model/Team.h @@ -24,6 +24,8 @@ // team event types enum { + TEAM_EVENT_TEAM_RENAMED, + TEAM_EVENT_THREAD_ADDED, TEAM_EVENT_THREAD_REMOVED, TEAM_EVENT_IMAGE_ADDED, @@ -273,6 +275,7 @@ private: typedef DoublyLinkedList ListenerList; private: + void _NotifyTeamRenamed(); void _NotifyThreadAdded(Thread* thread); void _NotifyThreadRemoved(Thread* thread); void _NotifyImageAdded(Image* image); @@ -474,6 +477,9 @@ class Team::Listener : public DoublyLinkedListLinkImpl { public: virtual ~Listener(); + virtual void TeamRenamed( + const Team::Event& event); + virtual void ThreadAdded(const Team::ThreadEvent& event); virtual void ThreadRemoved(const Team::ThreadEvent& event); diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp index ae63b9426d..ced49882b6 100644 --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp @@ -145,12 +145,7 @@ TeamWindow::TeamWindow(::Team* team, UserInterfaceListener* listener) fFilePanel(NULL), fActiveSourceWorker(-1) { - fTeam->Lock(); - BString name = fTeam->Name(); - fTeam->Unlock(); - if (fTeam->ID() >= 0) - name << " (" << fTeam->ID() << ")"; - SetTitle(name.String()); + _UpdateTitle(); fTeam->AddListener(this); } @@ -518,6 +513,11 @@ TeamWindow::MessageReceived(BMessage* message) } break; } + case MSG_TEAM_RENAMED: + { + _UpdateTitle(); + break; + } case MSG_THREAD_STATE_CHANGED: { int32 threadID; @@ -905,6 +905,13 @@ TeamWindow::ValueNodeWriteRequested(ValueNode* node, CpuState* state, } +void +TeamWindow::TeamRenamed(const Team::Event& event) +{ + PostMessage(MSG_TEAM_RENAMED); +} + + void TeamWindow::ThreadStateChanged(const Team::ThreadEvent& event) { @@ -1141,6 +1148,18 @@ TeamWindow::_Init() } +void +TeamWindow::_UpdateTitle() +{ + AutoLocker< ::Team> lock(fTeam); + + BString name = fTeam->Name(); + if (fTeam->ID() >= 0) + name << " (" << fTeam->ID() << ")"; + SetTitle(name.String()); +} + + void TeamWindow::_SetActiveThread(::Thread* thread) { diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h index f8d601823a..627f4296dc 100644 --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.h @@ -134,6 +134,7 @@ private: CpuState* state, Value* value); // Team::Listener + virtual void TeamRenamed(const Team::Event& event); virtual void ThreadStateChanged( const Team::ThreadEvent& event); virtual void ThreadCpuStateChanged( @@ -157,6 +158,7 @@ private: void _Init(); + void _UpdateTitle(); void _SetActiveThread(::Thread* thread); void _SetActiveImage(Image* image); void _SetActiveStackTrace(StackTrace* stackTrace);