Index: base/debug/trace_event_impl.cc |
diff --git a/base/debug/trace_event_impl.cc b/base/debug/trace_event_impl.cc |
index 5c521d462fe0e73c766d801f1b4340ad2d82670f..5341ba3a1867861cb444cd0009fa6dfea0d49f64 100644 |
--- a/base/debug/trace_event_impl.cc |
+++ b/base/debug/trace_event_impl.cc |
@@ -1533,6 +1533,19 @@ void TraceLog::SetDisabledWhileLocked() { |
return; |
} |
+ dispatching_to_observer_list_ = true; |
+ std::vector<EnabledStateObserver*> observer_list = |
+ enabled_state_observer_list_; |
+ |
+ { |
+ // Dispatch to observers outside the lock in case the observer triggers a |
+ // trace event. |
+ AutoUnlock unlock(lock_); |
+ for (size_t i = 0; i < observer_list.size(); ++i) |
+ observer_list[i]->OnBeforeTraceLogDisabled(); |
+ } |
+ dispatching_to_observer_list_ = false; |
+ |
mode_ = DISABLED; |
if (sampling_thread_.get()) { |
@@ -1552,9 +1565,6 @@ void TraceLog::SetDisabledWhileLocked() { |
AddMetadataEventsWhileLocked(); |
dispatching_to_observer_list_ = true; |
- std::vector<EnabledStateObserver*> observer_list = |
- enabled_state_observer_list_; |
- |
{ |
// Dispatch to observers outside the lock in case the observer triggers a |
// trace event. |