Note that this means that there is no new code. The code has been taken directly from condition_variable_win.cc/h compensating minimally to be able to split up the two code paths. Tested by: 1) Disabling native implementation and send to try bots. 2) Only return native implementation (i.e. if native implementation returns NULL there will be a crash when using the condition variable) and send to try bots. 3) The final cl sent to trybots. All tests pass. The changes are due to static analyzer code complaints. BUG=N/A Review URL: https://webrtc-codereview.appspot.com/1191004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3728 4adac7df-926f-26a2-2b94-8c16560cd09d
42 lines
1.4 KiB
C++
42 lines
1.4 KiB
C++
/*
|
|
* 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/interface/condition_variable_wrapper.h"
|
|
|
|
#if defined(_WIN32)
|
|
#include <windows.h>
|
|
#include "webrtc/system_wrappers/source/condition_variable_event_win.h"
|
|
#include "webrtc/system_wrappers/source/condition_variable_native_win.h"
|
|
#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
|
|
#include <pthread.h>
|
|
#include "webrtc/system_wrappers/source/condition_variable_posix.h"
|
|
#endif
|
|
|
|
namespace webrtc {
|
|
|
|
ConditionVariableWrapper* ConditionVariableWrapper::CreateConditionVariable() {
|
|
#if defined(_WIN32)
|
|
// 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;
|
|
#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
|
|
return ConditionVariablePosix::Create();
|
|
#else
|
|
return NULL;
|
|
#endif
|
|
}
|
|
|
|
} // namespace webrtc
|