Rework control flow for debug report generator.

- DebugReportGenerator is now its own BLooper that generates reports asynchronously
  instead of in TeamDebugger's message loop.
- If a stack trace isn't yet available, DebugReportGenerator now waits for it to
  be generated.
- Extended Team to add a listener event for report generation completing. DebugReportGenerator
  now generates such an event when it has finished writing a report.
This commit is contained in:
Rene Gollent
2012-11-24 00:44:00 -05:00
parent 793d00f975
commit 248c2ff45c
6 changed files with 143 additions and 30 deletions
+3 -10
View File
@@ -207,6 +207,8 @@ TeamDebugger::~TeamDebugger()
delete fBreakpointManager;
delete fWatchpointManager;
delete fMemoryBlockManager;
fReportGenerator->Lock();
fReportGenerator->Quit();
delete fReportGenerator;
delete fWorker;
delete fTeam;
@@ -550,9 +552,7 @@ TeamDebugger::MessageReceived(BMessage* message)
case MSG_GENERATE_DEBUG_REPORT:
{
entry_ref ref;
if (message->FindRef("target", &ref) == B_OK)
_HandleGenerateDebugReport(ref);
fReportGenerator->PostMessage(message);
break;
}
@@ -1532,13 +1532,6 @@ TeamDebugger::_HandleInspectAddress(target_addr_t address,
}
void
TeamDebugger::_HandleGenerateDebugReport(const entry_ref& ref)
{
fReportGenerator->GenerateReport(ref);
}
ThreadHandler*
TeamDebugger::_GetThreadHandler(thread_id threadID)
{