| Index: webrtc/base/platform_thread.cc
|
| diff --git a/webrtc/base/platform_thread.cc b/webrtc/base/platform_thread.cc
|
| index af90672a81a7b0c9e9a31f918542d252798a8621..05b7a258c0d58b7d35d16f8f4f09c02f303b0693 100644
|
| --- a/webrtc/base/platform_thread.cc
|
| +++ b/webrtc/base/platform_thread.cc
|
| @@ -76,18 +76,6 @@ void SetCurrentThreadName(const char* name) {
|
| #endif
|
| }
|
|
|
| -} // namespace rtc
|
| -
|
| -namespace webrtc {
|
| -
|
| -rtc::scoped_ptr<PlatformThread> PlatformThread::CreateThread(
|
| - ThreadRunFunction func,
|
| - void* obj,
|
| - const char* thread_name) {
|
| - return rtc::scoped_ptr<PlatformThread>(
|
| - new PlatformThread(func, obj, thread_name));
|
| -}
|
| -
|
| namespace {
|
| #if defined(WEBRTC_WIN)
|
| void CALLBACK RaiseFlag(ULONG_PTR param) {
|
| @@ -139,7 +127,7 @@ void* PlatformThread::StartThread(void* param) {
|
| }
|
| #endif // defined(WEBRTC_WIN)
|
|
|
| -bool PlatformThread::Start() {
|
| +void PlatformThread::Start() {
|
| RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
| RTC_DCHECK(!thread_) << "Thread already started?";
|
| #if defined(WEBRTC_WIN)
|
| @@ -158,28 +146,33 @@ bool PlatformThread::Start() {
|
| pthread_attr_setstacksize(&attr, 1024 * 1024);
|
| RTC_CHECK_EQ(0, pthread_create(&thread_, &attr, &StartThread, this));
|
| #endif // defined(WEBRTC_WIN)
|
| - return true;
|
| }
|
|
|
| -bool PlatformThread::Stop() {
|
| +bool PlatformThread::IsRunning() const {
|
| RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
| #if defined(WEBRTC_WIN)
|
| - if (thread_) {
|
| - // Set stop_ to |true| on the worker thread.
|
| - QueueUserAPC(&RaiseFlag, thread_, reinterpret_cast<ULONG_PTR>(&stop_));
|
| - WaitForSingleObject(thread_, INFINITE);
|
| - CloseHandle(thread_);
|
| - thread_ = nullptr;
|
| - }
|
| + return thread_ != nullptr;
|
| #else
|
| - if (!thread_)
|
| - return true;
|
| + return thread_ != 0;
|
| +#endif // defined(WEBRTC_WIN)
|
| +}
|
| +
|
| +void PlatformThread::Stop() {
|
| + RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
| + if (!IsRunning())
|
| + return;
|
|
|
| +#if defined(WEBRTC_WIN)
|
| + // Set stop_ to |true| on the worker thread.
|
| + QueueUserAPC(&RaiseFlag, thread_, reinterpret_cast<ULONG_PTR>(&stop_));
|
| + WaitForSingleObject(thread_, INFINITE);
|
| + CloseHandle(thread_);
|
| + thread_ = nullptr;
|
| +#else
|
| stop_event_.Set();
|
| RTC_CHECK_EQ(0, pthread_join(thread_, nullptr));
|
| thread_ = 0;
|
| #endif // defined(WEBRTC_WIN)
|
| - return true;
|
| }
|
|
|
| void PlatformThread::Run() {
|
| @@ -202,8 +195,9 @@ void PlatformThread::Run() {
|
|
|
| bool PlatformThread::SetPriority(ThreadPriority priority) {
|
| RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
| + RTC_DCHECK(IsRunning());
|
| #if defined(WEBRTC_WIN)
|
| - return thread_ && SetThreadPriority(thread_, priority);
|
| + return SetThreadPriority(thread_, priority) != FALSE;
|
| #elif defined(__native_client__)
|
| // Setting thread priorities is not supported in NaCl.
|
| return true;
|
| @@ -212,8 +206,6 @@ bool PlatformThread::SetPriority(ThreadPriority priority) {
|
| // thread priorities.
|
| return true;
|
| #else
|
| - if (!thread_)
|
| - return false;
|
| #ifdef WEBRTC_THREAD_RR
|
| const int policy = SCHED_RR;
|
| #else
|
| @@ -255,4 +247,4 @@ bool PlatformThread::SetPriority(ThreadPriority priority) {
|
| #endif // defined(WEBRTC_WIN)
|
| }
|
|
|
| -} // namespace webrtc
|
| +} // namespace rtc
|
|
|