aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRSDuck <RSDuck@users.noreply.github.com>2021-02-11 16:00:36 +0100
committerRSDuck <RSDuck@users.noreply.github.com>2021-02-11 16:00:36 +0100
commitf05bc50d40cded130e188d165e6b310f2a72d58f (patch)
treef265a0d5cc84fe2e58cfd70c06d73c79efbbd474
parentd63f7977f83fb4bc48c633c3b1ecbfa23423370f (diff)
use std::function in Thread_Create so we can revert back to using it
-rw-r--r--src/GPU3D_Soft.cpp9
-rw-r--r--src/GPU3D_Soft.h3
-rw-r--r--src/Platform.h4
-rw-r--r--src/frontend/qt_sdl/Platform.cpp2
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();