diff --git a/core/logic/Database.cpp b/core/logic/Database.cpp index c9a024a7..3ef678db 100644 --- a/core/logic/Database.cpp +++ b/core/logic/Database.cpp @@ -537,7 +537,9 @@ bool DBManager::AddToThreadQueue(IDBThreadOperation *op, PrioQueueLevel prio) if (!m_Worker) { - m_Worker = new ke::Thread(this, "SM SQL Worker"); + m_Worker = new ke::Thread([this]() -> void { + Run(); + }, "SM SQL Worker"); if (!m_Worker->Succeeded()) { if (!s_OneTimeThreaderErrorMsg) diff --git a/core/logic/Database.h b/core/logic/Database.h index 85946e38..3511ad02 100644 --- a/core/logic/Database.h +++ b/core/logic/Database.h @@ -65,8 +65,7 @@ class DBManager : public SMGlobalClass, public IHandleTypeDispatch, public ITextListener_SMC, - public IPluginsListener, - public ke::IRunnable + public IPluginsListener { public: DBManager(); diff --git a/core/logic/thread/PosixThreads.cpp b/core/logic/thread/PosixThreads.cpp index 20a81634..4932962a 100644 --- a/core/logic/thread/PosixThreads.cpp +++ b/core/logic/thread/PosixThreads.cpp @@ -107,16 +107,20 @@ IThreadHandle *PosixThreader::MakeThread(IThread *pThread, const ThreadParams *p if (params == NULL) params = &g_defparams; - ke::AutoPtr pHandle(new ThreadHandle(this, pThread, params)); + ThreadHandle* pHandle = new ThreadHandle(this, pThread, params); - pHandle->m_thread = new ke::Thread(pHandle.get(), "SourceMod"); - if (!pHandle->m_thread->Succeeded()) + pHandle->m_thread = new ke::Thread([pHandle]() -> void { + pHandle->Run(); + }, "SourceMod"); + if (!pHandle->m_thread->Succeeded()) { + delete pHandle; return NULL; + } if (!(params->flags & Thread_CreateSuspended)) pHandle->Unpause(); - return pHandle.take(); + return pHandle; } IEventSignal *PosixThreader::MakeEventSignal() diff --git a/core/logic/thread/PosixThreads.h b/core/logic/thread/PosixThreads.h index 927bc11e..764994f9 100644 --- a/core/logic/thread/PosixThreads.h +++ b/core/logic/thread/PosixThreads.h @@ -41,7 +41,7 @@ using namespace SourceMod; class PosixThreader : public IThreader { public: - class ThreadHandle : public IThreadHandle, public ke::IRunnable + class ThreadHandle : public IThreadHandle { friend class PosixThreader; public: diff --git a/core/logic/thread/WinThreads.cpp b/core/logic/thread/WinThreads.cpp index 4aca8b05..79cb142e 100644 --- a/core/logic/thread/WinThreads.cpp +++ b/core/logic/thread/WinThreads.cpp @@ -106,11 +106,15 @@ IThreadHandle *WinThreader::MakeThread(IThread *pThread, const ThreadParams *par if (params == NULL) params = &g_defparams; - ke::AutoPtr pHandle(new ThreadHandle(this, pThread, params)); + ThreadHandle* pHandle = new ThreadHandle(this, pThread, params); - pHandle->m_thread = new ke::Thread(pHandle.get(), "SourceMod"); - if (!pHandle->m_thread->Succeeded()) - return NULL; + pHandle->m_thread = new ke::Thread([pHandle]() -> void { + pHandle->Run(); + }, "SourceMod"); + if (!pHandle->m_thread->Succeeded()) { + delete pHandle; + return nullptr; + } if (pHandle->m_params.prio != ThreadPrio_Normal) pHandle->SetPriority(pHandle->m_params.prio); @@ -118,7 +122,7 @@ IThreadHandle *WinThreader::MakeThread(IThread *pThread, const ThreadParams *par if (!(params->flags & Thread_CreateSuspended)) pHandle->Unpause(); - return pHandle.take(); + return pHandle; } IEventSignal *WinThreader::MakeEventSignal() diff --git a/core/logic/thread/WinThreads.h b/core/logic/thread/WinThreads.h index 34c576e0..63916fa4 100644 --- a/core/logic/thread/WinThreads.h +++ b/core/logic/thread/WinThreads.h @@ -42,7 +42,7 @@ using namespace SourceMod; class WinThreader : public IThreader { public: - class ThreadHandle : public IThreadHandle, public ke::IRunnable + class ThreadHandle : public IThreadHandle { friend class WinThreader; friend DWORD WINAPI Win32_ThreadGate(LPVOID param); diff --git a/public/amtl b/public/amtl index 52205706..ae57753e 160000 --- a/public/amtl +++ b/public/amtl @@ -1 +1 @@ -Subproject commit 522057068a520d75acca00f6682f4d06d1ae18a4 +Subproject commit ae57753e79a957d8578421f37043e6bea1603f65 diff --git a/sourcepawn b/sourcepawn index c0cfda87..594bfbb5 160000 --- a/sourcepawn +++ b/sourcepawn @@ -1 +1 @@ -Subproject commit c0cfda875390ae0cdd9055e53d0a06db6ce5ea18 +Subproject commit 594bfbb5e46a47ed57af28786254e9fb8c2c506f