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

Unified Diff: webrtc/system_wrappers/source/rw_lock_winxp_win.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
« no previous file with comments | « webrtc/system_wrappers/source/rw_lock_winxp_win.h ('k') | webrtc/system_wrappers/system_wrappers.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/system_wrappers/source/rw_lock_winxp_win.cc
diff --git a/webrtc/system_wrappers/source/rw_lock_winxp_win.cc b/webrtc/system_wrappers/source/rw_lock_winxp_win.cc
index 0fb57d9b9fb8b10f4cb22746125b39a7bd92f038..9393c9f91a7af89a26c84c579ba57b6f5ca68919 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();
« no previous file with comments | « webrtc/system_wrappers/source/rw_lock_winxp_win.h ('k') | webrtc/system_wrappers/system_wrappers.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698