Debugger: Add rename event for Team.

Team:
- Add listener hook and event type for rename events. These occur on exec()
  since at this point we're running a different executable.

TeamWindow:
- Factor out code for generating window title into a helper, and use from both
  window initialization and newly implemented rename listener hook.
This commit is contained in:
Rene Gollent
2015-07-26 14:37:27 -04:00
parent 25c638c20b
commit 754b42a5a1
5 changed files with 51 additions and 6 deletions
+1
View File
@@ -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',
+17
View File
@@ -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)
{
+6
View File
@@ -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<Listener> 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<Team::Listener> {
public:
virtual ~Listener();
virtual void TeamRenamed(
const Team::Event& event);
virtual void ThreadAdded(const Team::ThreadEvent& event);
virtual void ThreadRemoved(const Team::ThreadEvent& event);
@@ -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)
{
@@ -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);