The intended signalling from StartTimer() to Process() is that created_at_.tv_sec is set to 0, and timer_event_->Set() is then called in order to wake the process thread from timer_event_->Wait(). When this happens the process thread will return early and the run Process() again. This time it will pick up created_at_.tv_sec = 0 and run a new Wait() call with the desired end time. However if the process thread was NOT blocking on timer_event_->Wait() when timer_event_->Set() was called from StartTimer() it will mean that the first call to timer_event_->Wait() from Process(), AFTER the new time has been configured (count_ = 1), will return early. If the timer is not periodic it means that Set() will never be called, and any calls will Wait() will block until the time out. The solution is to always reset the event in timer_event_ on the first call to timerEvent_->Wait(), after a timer has started. Also some general cleanup. BUG= Review URL: https://codereview.webrtc.org/1812533002 Cr-Commit-Position: refs/heads/master@{#12082}
91 lines
2.8 KiB
Python
91 lines
2.8 KiB
Python
# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license
|
|
# that can be found in the LICENSE file in the root of the source
|
|
# tree. An additional intellectual property rights grant can be found
|
|
# in the file PATENTS. All contributing project authors may
|
|
# be found in the AUTHORS file in the root of the source tree.
|
|
|
|
{
|
|
'includes': ['../build/common.gypi',],
|
|
'targets': [
|
|
{
|
|
'target_name': 'system_wrappers_unittests',
|
|
'type': '<(gtest_target_type)',
|
|
'dependencies': [
|
|
'<(DEPTH)/testing/gtest.gyp:gtest',
|
|
'<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
|
|
'<(webrtc_root)/test/test.gyp:histogram',
|
|
'<(webrtc_root)/test/test.gyp:test_support_main',
|
|
],
|
|
'sources': [
|
|
'source/aligned_array_unittest.cc',
|
|
'source/aligned_malloc_unittest.cc',
|
|
'source/clock_unittest.cc',
|
|
'source/condition_variable_unittest.cc',
|
|
'source/critical_section_unittest.cc',
|
|
'source/logging_unittest.cc',
|
|
'source/data_log_unittest.cc',
|
|
'source/data_log_unittest_disabled.cc',
|
|
'source/data_log_helpers_unittest.cc',
|
|
'source/data_log_c_helpers_unittest.c',
|
|
'source/data_log_c_helpers_unittest.h',
|
|
'source/event_timer_posix_unittest.cc',
|
|
'source/metrics_unittest.cc',
|
|
'source/ntp_time_unittest.cc',
|
|
'source/rtp_to_ntp_unittest.cc',
|
|
'source/scoped_vector_unittest.cc',
|
|
'source/stringize_macros_unittest.cc',
|
|
'source/stl_util_unittest.cc',
|
|
],
|
|
'conditions': [
|
|
['enable_data_logging==1', {
|
|
'sources!': [ 'source/data_log_unittest_disabled.cc', ],
|
|
}, {
|
|
'sources!': [ 'source/data_log_unittest.cc', ],
|
|
}],
|
|
['OS=="android"', {
|
|
'dependencies': [
|
|
'<(DEPTH)/testing/android/native_test.gyp:native_test_native_code',
|
|
],
|
|
}],
|
|
],
|
|
# Disable warnings to enable Win64 build, issue 1323.
|
|
'msvs_disabled_warnings': [
|
|
4267, # size_t to int truncation.
|
|
],
|
|
},
|
|
],
|
|
'conditions': [
|
|
['include_tests==1 and OS=="android"', {
|
|
'targets': [
|
|
{
|
|
'target_name': 'system_wrappers_unittests_apk_target',
|
|
'type': 'none',
|
|
'dependencies': [
|
|
'<(apk_tests_path):system_wrappers_unittests_apk',
|
|
],
|
|
},
|
|
],
|
|
}],
|
|
['test_isolation_mode != "noop"', {
|
|
'targets': [
|
|
{
|
|
'target_name': 'system_wrappers_unittests_run',
|
|
'type': 'none',
|
|
'dependencies': [
|
|
'system_wrappers_unittests',
|
|
],
|
|
'includes': [
|
|
'../build/isolate.gypi',
|
|
],
|
|
'sources': [
|
|
'system_wrappers_unittests.isolate',
|
|
],
|
|
},
|
|
],
|
|
}],
|
|
],
|
|
}
|
|
|