diff --git a/webrtc/system_wrappers/BUILD.gn b/webrtc/system_wrappers/BUILD.gn index 98d15835c1..004d9d2343 100644 --- a/webrtc/system_wrappers/BUILD.gn +++ b/webrtc/system_wrappers/BUILD.gn @@ -15,7 +15,6 @@ static_library("system_wrappers") { "include/aligned_malloc.h", "include/atomic32.h", "include/clock.h", - "include/condition_variable_wrapper.h", "include/cpu_features_wrapper.h", "include/cpu_info.h", "include/critical_section_wrapper.h", @@ -45,11 +44,8 @@ static_library("system_wrappers") { "source/atomic32_mac.cc", "source/atomic32_win.cc", "source/clock.cc", - "source/condition_variable.cc", "source/condition_variable_event_win.cc", "source/condition_variable_event_win.h", - "source/condition_variable_native_win.cc", - "source/condition_variable_native_win.h", "source/cpu_features.cc", "source/cpu_info.cc", "source/critical_section.cc", diff --git a/webrtc/system_wrappers/include/condition_variable_wrapper.h b/webrtc/system_wrappers/include/condition_variable_wrapper.h deleted file mode 100644 index f88ba707b3..0000000000 --- a/webrtc/system_wrappers/include/condition_variable_wrapper.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2011 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. - */ - -#ifndef WEBRTC_SYSTEM_WRAPPERS_INCLUDE_CONDITION_VARIABLE_WRAPPER_H_ -#define WEBRTC_SYSTEM_WRAPPERS_INCLUDE_CONDITION_VARIABLE_WRAPPER_H_ - -// TODO(tommi): Remove completely. As is there is still some code for Windows -// that relies on ConditionVariableWrapper, but code has been removed on other -// platforms. -#if defined(WEBRTC_WIN) - -namespace webrtc { - -class CriticalSectionWrapper; - -class ConditionVariableWrapper { - public: - // Factory method, constructor disabled. - static ConditionVariableWrapper* CreateConditionVariable(); - - virtual ~ConditionVariableWrapper() {} - - // Calling thread will atomically release crit_sect and wait until next - // some other thread calls Wake() or WakeAll(). - virtual void SleepCS(CriticalSectionWrapper& crit_sect) = 0; - - // Same as above but with a timeout. - virtual bool SleepCS(CriticalSectionWrapper& crit_sect, - unsigned long max_time_in_ms) = 0; - - // Wakes one thread calling SleepCS(). - virtual void Wake() = 0; - - // Wakes all threads calling SleepCS(). - virtual void WakeAll() = 0; -}; - -} // namespace webrtc - -#endif // defined(WEBRTC_WIN) - -#endif // WEBRTC_SYSTEM_WRAPPERS_INCLUDE_CONDITION_VARIABLE_WRAPPER_H_ diff --git a/webrtc/system_wrappers/include/critical_section_wrapper.h b/webrtc/system_wrappers/include/critical_section_wrapper.h index c22d22afdc..777dec5cf0 100644 --- a/webrtc/system_wrappers/include/critical_section_wrapper.h +++ b/webrtc/system_wrappers/include/critical_section_wrapper.h @@ -46,10 +46,6 @@ class LOCKABLE CriticalSectionWrapper { private: #if defined (WEBRTC_WIN) CRITICAL_SECTION crit_; - - // TODO(tommi): Remove friendness. - friend class ConditionVariableEventWin; - friend class ConditionVariableNativeWin; #else pthread_mutex_t mutex_; #endif diff --git a/webrtc/system_wrappers/source/condition_variable.cc b/webrtc/system_wrappers/source/condition_variable.cc deleted file mode 100644 index 3b2c37483a..0000000000 --- a/webrtc/system_wrappers/source/condition_variable.cc +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2011 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. - */ - -#include "webrtc/system_wrappers/include/condition_variable_wrapper.h" - -// TODO(tommi): Remove completely. As is there is still some code for Windows -// that relies on ConditionVariableWrapper, but code has been removed on other -// platforms. -#if defined(WEBRTC_WIN) - -#include -#include "webrtc/system_wrappers/source/condition_variable_event_win.h" -#include "webrtc/system_wrappers/source/condition_variable_native_win.h" - -namespace webrtc { -ConditionVariableWrapper* ConditionVariableWrapper::CreateConditionVariable() { - // Try to create native condition variable implementation. - ConditionVariableWrapper* ret_val = ConditionVariableNativeWin::Create(); - if (!ret_val) { - // Native condition variable implementation does not exist. Create generic - // condition variable based on events. - ret_val = new ConditionVariableEventWin(); - } - return ret_val; -} -} // namespace webrtc - -#endif // defined(WEBRTC_WIN) diff --git a/webrtc/system_wrappers/source/condition_variable_event_win.cc b/webrtc/system_wrappers/source/condition_variable_event_win.cc index f61e085384..535cbc5460 100644 --- a/webrtc/system_wrappers/source/condition_variable_event_win.cc +++ b/webrtc/system_wrappers/source/condition_variable_event_win.cc @@ -118,11 +118,11 @@ ConditionVariableEventWin::~ConditionVariableEventWin() { DeleteCriticalSection(&num_waiters_crit_sect_); } -void ConditionVariableEventWin::SleepCS(CriticalSectionWrapper& crit_sect) { +void ConditionVariableEventWin::SleepCS(CRITICAL_SECTION* crit_sect) { SleepCS(crit_sect, INFINITE); } -bool ConditionVariableEventWin::SleepCS(CriticalSectionWrapper& crit_sect, +bool ConditionVariableEventWin::SleepCS(CRITICAL_SECTION* crit_sect, unsigned long max_time_in_ms) { EnterCriticalSection(&num_waiters_crit_sect_); @@ -134,7 +134,7 @@ bool ConditionVariableEventWin::SleepCS(CriticalSectionWrapper& crit_sect, ++(num_waiters_[eventID]); LeaveCriticalSection(&num_waiters_crit_sect_); - LeaveCriticalSection(&crit_sect.crit_); + LeaveCriticalSection(crit_sect); HANDLE events[2]; events[0] = events_[WAKE]; events[1] = events_[eventID]; @@ -160,7 +160,7 @@ bool ConditionVariableEventWin::SleepCS(CriticalSectionWrapper& crit_sect, ResetEvent(events_[eventID]); } - EnterCriticalSection(&crit_sect.crit_); + EnterCriticalSection(crit_sect); return ret_val; } diff --git a/webrtc/system_wrappers/source/condition_variable_event_win.h b/webrtc/system_wrappers/source/condition_variable_event_win.h index cdcef7dcb8..8099ad5f91 100644 --- a/webrtc/system_wrappers/source/condition_variable_event_win.h +++ b/webrtc/system_wrappers/source/condition_variable_event_win.h @@ -13,17 +13,15 @@ #include -#include "webrtc/system_wrappers/include/condition_variable_wrapper.h" - namespace webrtc { -class ConditionVariableEventWin : public ConditionVariableWrapper { +class ConditionVariableEventWin { public: ConditionVariableEventWin(); - virtual ~ConditionVariableEventWin(); + ~ConditionVariableEventWin(); - void SleepCS(CriticalSectionWrapper& crit_sect); - bool SleepCS(CriticalSectionWrapper& crit_sect, unsigned long max_time_inMS); + void SleepCS(CRITICAL_SECTION* crit_sect); + bool SleepCS(CRITICAL_SECTION* crit_sect, unsigned long max_time_inMS); void Wake(); void WakeAll(); diff --git a/webrtc/system_wrappers/source/condition_variable_native_win.cc b/webrtc/system_wrappers/source/condition_variable_native_win.cc deleted file mode 100644 index 3c07230907..0000000000 --- a/webrtc/system_wrappers/source/condition_variable_native_win.cc +++ /dev/null @@ -1,102 +0,0 @@ -/* - * 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. - */ - -#include "webrtc/system_wrappers/include/critical_section_wrapper.h" -#include "webrtc/system_wrappers/include/trace.h" -#include "webrtc/system_wrappers/source/condition_variable_native_win.h" - -namespace webrtc { - -static HMODULE library = NULL; -static bool win_support_condition_variables_primitive = false; - -PInitializeConditionVariable PInitializeConditionVariable_; -PSleepConditionVariableCS PSleepConditionVariableCS_; -PWakeConditionVariable PWakeConditionVariable_; -PWakeAllConditionVariable PWakeAllConditionVariable_; - -typedef void (WINAPI *PInitializeConditionVariable)(PCONDITION_VARIABLE); -typedef BOOL (WINAPI *PSleepConditionVariableCS)(PCONDITION_VARIABLE, - PCRITICAL_SECTION, DWORD); -typedef void (WINAPI *PWakeConditionVariable)(PCONDITION_VARIABLE); -typedef void (WINAPI *PWakeAllConditionVariable)(PCONDITION_VARIABLE); - -ConditionVariableNativeWin::ConditionVariableNativeWin() { -} - -ConditionVariableNativeWin::~ConditionVariableNativeWin() { -} - -ConditionVariableWrapper* ConditionVariableNativeWin::Create() { - ConditionVariableNativeWin* ret_val = new ConditionVariableNativeWin(); - if (!ret_val->Init()) { - delete ret_val; - return NULL; - } - return ret_val; -} - -bool ConditionVariableNativeWin::Init() { - if (!library) { - // Native implementation is supported on Vista+. - library = LoadLibrary(TEXT("Kernel32.dll")); - // TODO(henrike): this code results in an attempt to load the above dll - // every time the previous attempt failed. Only try to load once. - if (library) { - // TODO(henrike): not thread safe as reading and writing to library is not - // serialized. Fix. - WEBRTC_TRACE(kTraceStateInfo, kTraceUtility, -1, "Loaded Kernel.dll"); - - PInitializeConditionVariable_ = - (PInitializeConditionVariable) GetProcAddress( - library, "InitializeConditionVariable"); - PSleepConditionVariableCS_ = (PSleepConditionVariableCS) GetProcAddress( - library, "SleepConditionVariableCS"); - PWakeConditionVariable_ = (PWakeConditionVariable) GetProcAddress( - library, "WakeConditionVariable"); - PWakeAllConditionVariable_ = (PWakeAllConditionVariable) GetProcAddress( - library, "WakeAllConditionVariable"); - - if (PInitializeConditionVariable_ && PSleepConditionVariableCS_ - && PWakeConditionVariable_ && PWakeAllConditionVariable_) { - WEBRTC_TRACE( - kTraceStateInfo, kTraceUtility, -1, - "Loaded native condition variables"); - win_support_condition_variables_primitive = true; - } - } - } - if (!win_support_condition_variables_primitive) { - return false; - } - PInitializeConditionVariable_(&condition_variable_); - return true; -} - -void ConditionVariableNativeWin::SleepCS(CriticalSectionWrapper& crit_sect) { - SleepCS(crit_sect, INFINITE); -} - -bool ConditionVariableNativeWin::SleepCS(CriticalSectionWrapper& crit_sect, - unsigned long max_time_in_ms) { - BOOL ret_val = PSleepConditionVariableCS_(&condition_variable_, - &crit_sect.crit_, max_time_in_ms); - return ret_val != 0; -} - -void ConditionVariableNativeWin::Wake() { - PWakeConditionVariable_(&condition_variable_); -} - -void ConditionVariableNativeWin::WakeAll() { - PWakeAllConditionVariable_(&condition_variable_); -} - -} // namespace webrtc diff --git a/webrtc/system_wrappers/source/condition_variable_native_win.h b/webrtc/system_wrappers/source/condition_variable_native_win.h deleted file mode 100644 index c22787f2f2..0000000000 --- a/webrtc/system_wrappers/source/condition_variable_native_win.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * 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. - */ - -#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_CONDITION_VARIABLE_NATIVE_WIN_H_ -#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_CONDITION_VARIABLE_NATIVE_WIN_H_ - -#include - -#include "webrtc/system_wrappers/include/condition_variable_wrapper.h" - -namespace webrtc { - -#if !defined CONDITION_VARIABLE_INIT -typedef struct RTL_CONDITION_VARIABLE_ { - void* Ptr; -} RTL_CONDITION_VARIABLE, *PRTL_CONDITION_VARIABLE; - -typedef RTL_CONDITION_VARIABLE CONDITION_VARIABLE, *PCONDITION_VARIABLE; -#endif - -typedef void (WINAPI* PInitializeConditionVariable)(PCONDITION_VARIABLE); -typedef BOOL (WINAPI* PSleepConditionVariableCS)(PCONDITION_VARIABLE, - PCRITICAL_SECTION, DWORD); -typedef void (WINAPI* PWakeConditionVariable)(PCONDITION_VARIABLE); -typedef void (WINAPI* PWakeAllConditionVariable)(PCONDITION_VARIABLE); - -class ConditionVariableNativeWin : public ConditionVariableWrapper { - public: - static ConditionVariableWrapper* Create(); - virtual ~ConditionVariableNativeWin(); - - void SleepCS(CriticalSectionWrapper& crit_sect); - bool SleepCS(CriticalSectionWrapper& crit_sect, unsigned long max_time_inMS); - void Wake(); - void WakeAll(); - - private: - ConditionVariableNativeWin(); - - bool Init(); - - CONDITION_VARIABLE condition_variable_; -}; - -} // namespace webrtc - -#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_CONDITION_VARIABLE_NATIVE_WIN_H_ diff --git a/webrtc/system_wrappers/source/condition_variable_unittest.cc b/webrtc/system_wrappers/source/condition_variable_unittest.cc index 2e873dca16..4b1b6cc608 100644 --- a/webrtc/system_wrappers/source/condition_variable_unittest.cc +++ b/webrtc/system_wrappers/source/condition_variable_unittest.cc @@ -8,13 +8,13 @@ * be found in the AUTHORS file in the root of the source tree. */ -#include "webrtc/system_wrappers/include/condition_variable_wrapper.h" - // TODO(tommi): Remove completely. As is there is still some code for Windows -// that relies on ConditionVariableWrapper, but code has been removed on other +// that relies on ConditionVariableEventWin, but code has been removed on other // platforms. #if defined(WEBRTC_WIN) +#include "webrtc/system_wrappers/source/condition_variable_event_win.h" + #include "testing/gtest/include/gtest/gtest.h" #include "webrtc/base/platform_thread.h" #include "webrtc/base/scoped_ptr.h" @@ -40,37 +40,36 @@ const int kVeryShortWaitMs = 20; // Used when we want a timeout class Baton { public: Baton() - : giver_sect_(CriticalSectionWrapper::CreateCriticalSection()), - crit_sect_(CriticalSectionWrapper::CreateCriticalSection()), - cond_var_(ConditionVariableWrapper::CreateConditionVariable()), - being_passed_(false), + : being_passed_(false), pass_count_(0) { + InitializeCriticalSection(&crit_sect_); } ~Baton() { - delete giver_sect_; - delete crit_sect_; - delete cond_var_; + DeleteCriticalSection(&crit_sect_); } // Pass the baton. Returns false if baton is not picked up in |max_msecs|. // Only one process can pass at the same time; this property is // ensured by the |giver_sect_| lock. bool Pass(uint32_t max_msecs) { - CriticalSectionScoped cs_giver(giver_sect_); - CriticalSectionScoped cs(crit_sect_); + CriticalSectionScoped cs_giver(&giver_sect_); + EnterCriticalSection(&crit_sect_); SignalBatonAvailable(); const bool result = TakeBatonIfStillFree(max_msecs); if (result) { ++pass_count_; } + LeaveCriticalSection(&crit_sect_); return result; } // Grab the baton. Returns false if baton is not passed. bool Grab(uint32_t max_msecs) { - CriticalSectionScoped cs(crit_sect_); - return WaitUntilBatonOffered(max_msecs); + EnterCriticalSection(&crit_sect_); + bool ret = WaitUntilBatonOffered(max_msecs); + LeaveCriticalSection(&crit_sect_); + return ret; } int PassCount() { @@ -79,7 +78,7 @@ class Baton { // finishes. I.e. the Grab()-call may finish before |pass_count_| has been // incremented. // Thus, this function waits on giver_sect_. - CriticalSectionScoped cs(giver_sect_); + CriticalSectionScoped cs(&giver_sect_); return pass_count_; } @@ -88,19 +87,19 @@ class Baton { // These functions must be called with crit_sect_ held. bool WaitUntilBatonOffered(int timeout_ms) { while (!being_passed_) { - if (!cond_var_->SleepCS(*crit_sect_, timeout_ms)) { + if (!cond_var_.SleepCS(&crit_sect_, timeout_ms)) { return false; } } being_passed_ = false; - cond_var_->Wake(); + cond_var_.Wake(); return true; } void SignalBatonAvailable() { assert(!being_passed_); being_passed_ = true; - cond_var_->Wake(); + cond_var_.Wake(); } // Timeout extension: Wait for a limited time for someone else to @@ -112,27 +111,25 @@ class Baton { bool TakeBatonIfStillFree(int timeout_ms) { bool not_timeout = true; while (being_passed_ && not_timeout) { - not_timeout = cond_var_->SleepCS(*crit_sect_, timeout_ms); + not_timeout = cond_var_.SleepCS(&crit_sect_, timeout_ms); // If we're woken up while variable is still held, we may have // gotten a wakeup destined for a grabber thread. // This situation is not treated specially here. } - if (!being_passed_) { + if (!being_passed_) return true; - } else { - assert(!not_timeout); - being_passed_ = false; - return false; - } + assert(!not_timeout); + being_passed_ = false; + return false; } // Lock that ensures that there is only one thread in the active // part of Pass() at a time. // |giver_sect_| must always be acquired before |cond_var_|. - CriticalSectionWrapper* giver_sect_; + CriticalSectionWrapper giver_sect_; // Lock that protects |being_passed_|. - CriticalSectionWrapper* crit_sect_; - ConditionVariableWrapper* cond_var_; + CRITICAL_SECTION crit_sect_; + ConditionVariableEventWin cond_var_; bool being_passed_; // Statistics information: Number of successfull passes. int pass_count_; @@ -191,16 +188,17 @@ TEST_F(CondVarTest, DISABLED_PassBatonMultipleTimes) { } TEST(CondVarWaitTest, WaitingWaits) { - rtc::scoped_ptr crit_sect( - CriticalSectionWrapper::CreateCriticalSection()); - rtc::scoped_ptr cond_var( - ConditionVariableWrapper::CreateConditionVariable()); - CriticalSectionScoped cs(crit_sect.get()); + CRITICAL_SECTION crit_sect; + InitializeCriticalSection(&crit_sect); + ConditionVariableEventWin cond_var; + EnterCriticalSection(&crit_sect); int64_t start_ms = TickTime::MillisecondTimestamp(); - EXPECT_FALSE(cond_var->SleepCS(*(crit_sect), kVeryShortWaitMs)); + EXPECT_FALSE(cond_var.SleepCS(&crit_sect, kVeryShortWaitMs)); int64_t end_ms = TickTime::MillisecondTimestamp(); EXPECT_LE(start_ms + kVeryShortWaitMs, end_ms) << "actual elapsed:" << end_ms - start_ms; + LeaveCriticalSection(&crit_sect); + DeleteCriticalSection(&crit_sect); } } // anonymous namespace diff --git a/webrtc/system_wrappers/source/rw_lock_winxp_win.cc b/webrtc/system_wrappers/source/rw_lock_winxp_win.cc index 0fb57d9b9f..9393c9f91a 100644 --- a/webrtc/system_wrappers/source/rw_lock_winxp_win.cc +++ b/webrtc/system_wrappers/source/rw_lock_winxp_win.cc @@ -11,16 +11,34 @@ #include "webrtc/system_wrappers/source/rw_lock_winxp_win.h" namespace webrtc { +namespace { +class ScopedLock { + public: + ScopedLock(CRITICAL_SECTION* lock) : lock_(lock) { + EnterCriticalSection(lock_); + } + ~ScopedLock() { + LeaveCriticalSection(lock_); + } + private: + CRITICAL_SECTION* const lock_; +}; +} -RWLockWinXP::RWLockWinXP() {} -RWLockWinXP::~RWLockWinXP() {} +RWLockWinXP::RWLockWinXP() { + InitializeCriticalSection(&critical_section_); +} + +RWLockWinXP::~RWLockWinXP() { + DeleteCriticalSection(&critical_section_); +} void RWLockWinXP::AcquireLockExclusive() { - CriticalSectionScoped cs(&critical_section_); + ScopedLock cs(&critical_section_); if (writer_active_ || readers_active_ > 0) { ++writers_waiting_; while (writer_active_ || readers_active_ > 0) { - write_condition_.SleepCS(critical_section_); + write_condition_.SleepCS(&critical_section_); } --writers_waiting_; } @@ -28,7 +46,7 @@ void RWLockWinXP::AcquireLockExclusive() { } void RWLockWinXP::ReleaseLockExclusive() { - CriticalSectionScoped cs(&critical_section_); + ScopedLock cs(&critical_section_); writer_active_ = false; if (writers_waiting_ > 0) { write_condition_.Wake(); @@ -38,12 +56,12 @@ void RWLockWinXP::ReleaseLockExclusive() { } void RWLockWinXP::AcquireLockShared() { - CriticalSectionScoped cs(&critical_section_); + ScopedLock cs(&critical_section_); if (writer_active_ || writers_waiting_ > 0) { ++readers_waiting_; while (writer_active_ || writers_waiting_ > 0) { - read_condition_.SleepCS(critical_section_); + read_condition_.SleepCS(&critical_section_); } --readers_waiting_; } @@ -51,7 +69,7 @@ void RWLockWinXP::AcquireLockShared() { } void RWLockWinXP::ReleaseLockShared() { - CriticalSectionScoped cs(&critical_section_); + ScopedLock cs(&critical_section_); --readers_active_; if (readers_active_ == 0 && writers_waiting_ > 0) { write_condition_.Wake(); diff --git a/webrtc/system_wrappers/source/rw_lock_winxp_win.h b/webrtc/system_wrappers/source/rw_lock_winxp_win.h index 35decca337..5c884482b6 100644 --- a/webrtc/system_wrappers/source/rw_lock_winxp_win.h +++ b/webrtc/system_wrappers/source/rw_lock_winxp_win.h @@ -13,7 +13,6 @@ #include "webrtc/system_wrappers/include/rw_lock_wrapper.h" #include "webrtc/system_wrappers/source/condition_variable_event_win.h" -#include "webrtc/system_wrappers/include/critical_section_wrapper.h" #include "webrtc/typedefs.h" namespace webrtc { @@ -30,7 +29,7 @@ class RWLockWinXP : public RWLockWrapper { void ReleaseLockShared() override; private: - CriticalSectionWrapper critical_section_; + CRITICAL_SECTION critical_section_; ConditionVariableEventWin read_condition_; ConditionVariableEventWin write_condition_; diff --git a/webrtc/system_wrappers/system_wrappers.gyp b/webrtc/system_wrappers/system_wrappers.gyp index a1ac45cb61..bce91000fc 100644 --- a/webrtc/system_wrappers/system_wrappers.gyp +++ b/webrtc/system_wrappers/system_wrappers.gyp @@ -21,7 +21,6 @@ 'include/aligned_malloc.h', 'include/atomic32.h', 'include/clock.h', - 'include/condition_variable_wrapper.h', 'include/cpu_info.h', 'include/cpu_features_wrapper.h', 'include/critical_section_wrapper.h', @@ -54,11 +53,8 @@ 'source/atomic32_posix.cc', 'source/atomic32_win.cc', 'source/clock.cc', - 'source/condition_variable.cc', 'source/condition_variable_event_win.cc', 'source/condition_variable_event_win.h', - 'source/condition_variable_native_win.cc', - 'source/condition_variable_native_win.h', 'source/cpu_info.cc', 'source/cpu_features.cc', 'source/critical_section.cc',