================ @@ -1433,11 +1434,30 @@ void Debugger::SetDestroyCallback( static void PrivateReportProgress(Debugger &debugger, uint64_t progress_id, std::string title, std::string details, uint64_t completed, uint64_t total, - bool is_debugger_specific) { + bool is_debugger_specific, + uint32_t progress_broadcast_bit) { // Only deliver progress events if we have any progress listeners. const uint32_t event_type = Debugger::eBroadcastBitProgress; - if (!debugger.GetBroadcaster().EventTypeHasListeners(event_type)) + const uint32_t category_event_type = Debugger::eBroadcastBitProgressCategory; + if (!debugger.GetBroadcaster().EventTypeHasListeners(event_type | + category_event_type)) return; + + if (debugger.GetBroadcaster().EventTypeHasListeners(category_event_type)) { + ProgressManager &progress_manager = ProgressManager::Instance(); + auto map_refcount = progress_manager.GetProgressCategoryMap().lookup(title); + + // Only broadcast the event to the progress category bit if it's an initial + // or final report for that category. Since we're broadcasting for the + // category specifically, clear the details. + if (progress_broadcast_bit == Debugger::eBroadcastBitProgressCategory) { + EventSP event_sp(new Event( + category_event_type, + new ProgressEventData(progress_id, std::move(title), "", completed, + total, is_debugger_specific))); + debugger.GetBroadcaster().BroadcastEvent(event_sp); + } + } ---------------- chelcassanova wrote:
So that instead of having it be a member of the struct or the class we just call `Debugger::ReportProgress(<other information>, eBroadcastBitProgress | eBroadcastBitProgressCategory)` and set the bit as needed from the progress manager itself? https://github.com/llvm/llvm-project/pull/83069 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits