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:
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
Reference in New Issue
Block a user