Browse Source

Use SdlThread in dthread.cpp

pull/2443/head
Vladimir Olteanu 5 years ago committed by Anders Jenbo
parent
commit
fc8fc46e17
  1. 13
      Source/dthread.cpp

13
Source/dthread.cpp

@ -9,7 +9,7 @@
#include "nthread.h" #include "nthread.h"
#include "utils/sdl_cond.h" #include "utils/sdl_cond.h"
#include "utils/thread.h" #include "utils/sdl_thread.h"
namespace devilution { namespace devilution {
@ -31,13 +31,12 @@ struct DThreadPkt {
namespace { namespace {
std::optional<SdlMutex> DthreadMutex; std::optional<SdlMutex> DthreadMutex;
SDL_threadID glpDThreadId;
std::list<DThreadPkt> InfoList; std::list<DThreadPkt> InfoList;
bool DthreadRunning; bool DthreadRunning;
std::optional<SdlCond> WorkToDo; std::optional<SdlCond> WorkToDo;
/* rdata */ /* rdata */
SDL_Thread *sghThread = nullptr; SdlThread Thread;
void DthreadHandler() void DthreadHandler()
{ {
@ -87,7 +86,7 @@ void dthread_start()
DthreadRunning = true; DthreadRunning = true;
DthreadMutex.emplace(); DthreadMutex.emplace();
WorkToDo.emplace(); WorkToDo.emplace();
sghThread = CreateThread(DthreadHandler, &glpDThreadId); Thread = { DthreadHandler };
} }
void DThreadCleanup() void DThreadCleanup()
@ -102,11 +101,7 @@ void DThreadCleanup()
WorkToDo->signal(); WorkToDo->signal();
} }
if (sghThread != nullptr && glpDThreadId != SDL_GetThreadID(nullptr)) { Thread.join();
SDL_WaitThread(sghThread, nullptr);
sghThread = nullptr;
}
DthreadMutex = std::nullopt; DthreadMutex = std::nullopt;
WorkToDo = std::nullopt; WorkToDo = std::nullopt;
} }

Loading…
Cancel
Save