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

Unified Diff: webrtc/system_wrappers/source/condition_variable_unittest.cc

Issue 1601523009: Remove ConditionVariableWrapper. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Move include inside guard Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/system_wrappers/source/condition_variable_unittest.cc
diff --git a/webrtc/system_wrappers/source/condition_variable_unittest.cc b/webrtc/system_wrappers/source/condition_variable_unittest.cc
index 2e873dca1687e924d653d79d401da67ecf1ea966..4b1b6cc608998d8721323e1e19bb929e3b9c3c5c 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<CriticalSectionWrapper> crit_sect(
- CriticalSectionWrapper::CreateCriticalSection());
- rtc::scoped_ptr<ConditionVariableWrapper> 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
« no previous file with comments | « webrtc/system_wrappers/source/condition_variable_native_win.cc ('k') | webrtc/system_wrappers/source/rw_lock_winxp_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698