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:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user