summaryrefslogtreecommitdiff
path: root/system_wrappers/source/trace_posix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'system_wrappers/source/trace_posix.cc')
-rw-r--r--system_wrappers/source/trace_posix.cc20
1 files changed, 13 insertions, 7 deletions
diff --git a/system_wrappers/source/trace_posix.cc b/system_wrappers/source/trace_posix.cc
index 49659690..d0ab45b7 100644
--- a/system_wrappers/source/trace_posix.cc
+++ b/system_wrappers/source/trace_posix.cc
@@ -38,13 +38,15 @@
namespace webrtc {
-TracePosix::TracePosix() {
+TracePosix::TracePosix()
+ : crit_sect_(*CriticalSectionWrapper::CreateCriticalSection()) {
struct timeval system_time_high_res;
gettimeofday(&system_time_high_res, 0);
prev_api_tick_count_ = prev_tick_count_ = system_time_high_res.tv_sec;
}
TracePosix::~TracePosix() {
+ delete &crit_sect_;
StopThread();
}
@@ -60,13 +62,17 @@ WebRtc_Word32 TracePosix::AddTime(char* trace_message,
const WebRtc_UWord32 ms_time = system_time_high_res.tv_usec / 1000;
WebRtc_UWord32 prev_tickCount = 0;
- if (level == kTraceApiCall) {
- prev_tickCount = prev_tick_count_;
- prev_tick_count_ = ms_time;
- } else {
- prev_tickCount = prev_api_tick_count_;
- prev_api_tick_count_ = ms_time;
+ {
+ CriticalSectionScoped lock(&crit_sect_);
+ if (level == kTraceApiCall) {
+ prev_tickCount = prev_tick_count_;
+ prev_tick_count_ = ms_time;
+ } else {
+ prev_tickCount = prev_api_tick_count_;
+ prev_api_tick_count_ = ms_time;
+ }
}
+
WebRtc_UWord32 dw_delta_time = ms_time - prev_tickCount;
if (prev_tickCount == 0) {
dw_delta_time = 0;