================ @@ -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:
Such that we set `progress_category_bit` from the progress manager and broadcast to that as such: ``` 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); ``` 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