Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Side by Side Diff: base/trace_event/trace_log.cc

Issue 1348613006: [tracing] Fix races in TraceLog's EnabledStateObserver (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/trace_event/trace_log.h" 5 #include "base/trace_event/trace_log.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "base/base_switches.h" 10 #include "base/base_switches.h"
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 } 801 }
802 802
803 int TraceLog::GetNumTracesRecorded() { 803 int TraceLog::GetNumTracesRecorded() {
804 AutoLock lock(lock_); 804 AutoLock lock(lock_);
805 if (!IsEnabled()) 805 if (!IsEnabled())
806 return -1; 806 return -1;
807 return num_traces_recorded_; 807 return num_traces_recorded_;
808 } 808 }
809 809
810 void TraceLog::AddEnabledStateObserver(EnabledStateObserver* listener) { 810 void TraceLog::AddEnabledStateObserver(EnabledStateObserver* listener) {
811 AutoLock lock(lock_);
811 enabled_state_observer_list_.push_back(listener); 812 enabled_state_observer_list_.push_back(listener);
812 } 813 }
813 814
814 void TraceLog::RemoveEnabledStateObserver(EnabledStateObserver* listener) { 815 void TraceLog::RemoveEnabledStateObserver(EnabledStateObserver* listener) {
816 AutoLock lock(lock_);
815 std::vector<EnabledStateObserver*>::iterator it = 817 std::vector<EnabledStateObserver*>::iterator it =
816 std::find(enabled_state_observer_list_.begin(), 818 std::find(enabled_state_observer_list_.begin(),
817 enabled_state_observer_list_.end(), listener); 819 enabled_state_observer_list_.end(), listener);
818 if (it != enabled_state_observer_list_.end()) 820 if (it != enabled_state_observer_list_.end())
819 enabled_state_observer_list_.erase(it); 821 enabled_state_observer_list_.erase(it);
820 } 822 }
821 823
822 bool TraceLog::HasEnabledStateObserver(EnabledStateObserver* listener) const { 824 bool TraceLog::HasEnabledStateObserver(EnabledStateObserver* listener) const {
825 AutoLock lock(lock_);
823 std::vector<EnabledStateObserver*>::const_iterator it = 826 std::vector<EnabledStateObserver*>::const_iterator it =
824 std::find(enabled_state_observer_list_.begin(), 827 std::find(enabled_state_observer_list_.begin(),
825 enabled_state_observer_list_.end(), listener); 828 enabled_state_observer_list_.end(), listener);
826 return it != enabled_state_observer_list_.end(); 829 return it != enabled_state_observer_list_.end();
827 } 830 }
828 831
829 TraceLogStatus TraceLog::GetStatus() const { 832 TraceLogStatus TraceLog::GetStatus() const {
830 AutoLock lock(lock_); 833 AutoLock lock(lock_);
831 TraceLogStatus result; 834 TraceLogStatus result;
832 result.event_capacity = logged_events_->Capacity(); 835 result.event_capacity = logged_events_->Capacity();
(...skipping 936 matching lines...) Expand 10 before | Expand all | Expand 10 after
1769 } 1772 }
1770 1773
1771 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() { 1774 ScopedTraceBinaryEfficient::~ScopedTraceBinaryEfficient() {
1772 if (*category_group_enabled_) { 1775 if (*category_group_enabled_) {
1773 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_, 1776 TRACE_EVENT_API_UPDATE_TRACE_EVENT_DURATION(category_group_enabled_, name_,
1774 event_handle_); 1777 event_handle_);
1775 } 1778 }
1776 } 1779 }
1777 1780
1778 } // namespace trace_event_internal 1781 } // namespace trace_event_internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698