diff options
author | RSDuck <RSDuck@users.noreply.github.com> | 2021-02-11 16:00:36 +0100 |
---|---|---|
committer | RSDuck <RSDuck@users.noreply.github.com> | 2021-02-11 16:00:36 +0100 |
commit | f05bc50d40cded130e188d165e6b310f2a72d58f (patch) | |
tree | f265a0d5cc84fe2e58cfd70c06d73c79efbbd474 | |
parent | d63f7977f83fb4bc48c633c3b1ecbfa23423370f (diff) |
use std::function in Thread_Create so we can revert back to using it
-rw-r--r-- | src/GPU3D_Soft.cpp | 9 | ||||
-rw-r--r-- | src/GPU3D_Soft.h | 3 | ||||
-rw-r--r-- | src/Platform.h | 4 | ||||
-rw-r--r-- | src/frontend/qt_sdl/Platform.cpp | 2 |
4 files changed, 8 insertions, 10 deletions
diff --git a/src/GPU3D_Soft.cpp b/src/GPU3D_Soft.cpp index f6d27a0..de66b6b 100644 --- a/src/GPU3D_Soft.cpp +++ b/src/GPU3D_Soft.cpp @@ -37,10 +37,8 @@ void SoftRenderer::StopRenderThread() { RenderThreadRunning = false; Platform::Semaphore_Post(Sema_RenderStart); - // Platform::Thread_Wait(RenderThread); - // Platform::Thread_Free(RenderThread); - RenderThread.join(); - + Platform::Thread_Wait(RenderThread); + Platform::Thread_Free(RenderThread); } } @@ -51,8 +49,7 @@ void SoftRenderer::SetupRenderThread() if (!RenderThreadRunning) { RenderThreadRunning = true; - //RenderThread = Platform::Thread_Create(RenderThreadFunc); - RenderThread = std::thread(&SoftRenderer::RenderThreadFunc, this); + RenderThread = Platform::Thread_Create(std::bind(&RenderThreadFunc, this)); } // otherwise more than one frame can be queued up at once diff --git a/src/GPU3D_Soft.h b/src/GPU3D_Soft.h index 851b7c1..ee1977d 100644 --- a/src/GPU3D_Soft.h +++ b/src/GPU3D_Soft.h @@ -505,8 +505,7 @@ private: // threading bool Threaded; - // Platform::Thread* RenderThread; - std::thread RenderThread; + Platform::Thread* RenderThread; bool RenderThreadRunning; bool RenderThreadRendering; Platform::Semaphore* Sema_RenderStart; diff --git a/src/Platform.h b/src/Platform.h index 42e1e24..9542233 100644 --- a/src/Platform.h +++ b/src/Platform.h @@ -21,6 +21,8 @@ #include "types.h" +#include <functional> + namespace Platform { @@ -68,7 +70,7 @@ inline bool LocalFileExists(const char* name) } struct Thread; -Thread* Thread_Create(void (*func)()); +Thread* Thread_Create(std::function<void()> func); void Thread_Free(Thread* thread); void Thread_Wait(Thread* thread); diff --git a/src/frontend/qt_sdl/Platform.cpp b/src/frontend/qt_sdl/Platform.cpp index 7c4b553..6401305 100644 --- a/src/frontend/qt_sdl/Platform.cpp +++ b/src/frontend/qt_sdl/Platform.cpp @@ -188,7 +188,7 @@ FILE* OpenLocalFile(const char* path, const char* mode) return OpenFile(fullpath.toUtf8(), mode, mode[0] != 'w'); } -Thread* Thread_Create(void (* func)()) +Thread* Thread_Create(std::function<void()> func) { QThread* t = QThread::create(func); t->start(); |