Use correct calling convention for CreateThread callback on Windows.

It appears that thread.cc was the only thing in the webrtc codebase that was
doing this incorrectly (platform_thread.cc, for instance, is ok).

BUG=chromium:687251

Review-Url: https://codereview.webrtc.org/2668693005
Cr-Commit-Position: refs/heads/master@{#16387}
This commit is contained in:
deadbeef
2017-01-31 15:10:44 -08:00
committed by Commit bot
parent 3e4ebc7d89
commit dc20e26594
2 changed files with 15 additions and 3 deletions

View File

@ -228,8 +228,7 @@ bool Thread::Start(Runnable* runnable) {
init->thread = this;
init->runnable = runnable;
#if defined(WEBRTC_WIN)
thread_ = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)PreRun, init, 0,
&thread_id_);
thread_ = CreateThread(NULL, 0, PreRun, init, 0, &thread_id_);
if (thread_) {
running_.Set();
} else {
@ -308,7 +307,12 @@ void Thread::AssertBlockingIsAllowedOnCurrentThread() {
#endif
}
// static
#if defined(WEBRTC_WIN)
DWORD WINAPI Thread::PreRun(LPVOID pv) {
#else
void* Thread::PreRun(void* pv) {
#endif
ThreadInit* init = static_cast<ThreadInit*>(pv);
ThreadManager::Instance()->SetCurrentThread(init->thread);
rtc::SetCurrentThreadName(init->thread->name_.c_str());
@ -325,7 +329,11 @@ void* Thread::PreRun(void* pv) {
init->thread->Run();
}
delete init;
return NULL;
#ifdef WEBRTC_WIN
return 0;
#else
return nullptr;
#endif
}
}

View File

@ -238,7 +238,11 @@ class LOCKABLE Thread : public MessageQueue {
friend class ScopedDisallowBlockingCalls;
private:
#if defined(WEBRTC_WIN)
static DWORD WINAPI PreRun(LPVOID context);
#else
static void *PreRun(void *pv);
#endif
// ThreadManager calls this instead WrapCurrent() because
// ThreadManager::Instance() cannot be used while ThreadManager is