mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Use _beginthreadex instead of CreateThread
This commit is contained in:
parent
75f8f7e689
commit
0d91170fb5
@ -240,7 +240,7 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
DWORD WINAPI vsyncThreadProc(LPVOID /*lpParameter*/)
|
||||
unsigned WINAPI vsyncThreadProc(LPVOID /*lpParameter*/)
|
||||
{
|
||||
while (!g_stopVsyncThread)
|
||||
{
|
||||
@ -323,8 +323,7 @@ namespace D3dDdi
|
||||
Compat::hookIatFunction(origDDrawModule, "gdi32.dll", "D3DKMTQueryAdapterInfo", queryAdapterInfo);
|
||||
Compat::hookIatFunction(origDDrawModule, "gdi32.dll", "D3DKMTSetGammaRamp", setGammaRamp);
|
||||
|
||||
g_vsyncThread = CreateThread(nullptr, 0, &vsyncThreadProc, nullptr, 0, nullptr);
|
||||
SetThreadPriority(g_vsyncThread, THREAD_PRIORITY_TIME_CRITICAL);
|
||||
g_vsyncThread = Dll::createThread(&vsyncThreadProc, nullptr, THREAD_PRIORITY_TIME_CRITICAL);
|
||||
}
|
||||
|
||||
void setDcFormatOverride(UINT format)
|
||||
|
@ -213,7 +213,7 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
DWORD WINAPI updateThreadProc(LPVOID /*lpParameter*/)
|
||||
unsigned WINAPI updateThreadProc(LPVOID /*lpParameter*/)
|
||||
{
|
||||
bool skipWaitForVsync = false;
|
||||
|
||||
@ -356,8 +356,7 @@ namespace DDraw
|
||||
|
||||
void RealPrimarySurface::init()
|
||||
{
|
||||
g_updateThread = CreateThread(nullptr, 0, &updateThreadProc, nullptr, 0, nullptr);
|
||||
SetThreadPriority(g_updateThread, THREAD_PRIORITY_TIME_CRITICAL);
|
||||
g_updateThread = Dll::createThread(&updateThreadProc, nullptr, THREAD_PRIORITY_TIME_CRITICAL);
|
||||
}
|
||||
|
||||
bool RealPrimarySurface::isFullScreen()
|
||||
|
@ -1,3 +1,5 @@
|
||||
#include <process.h>
|
||||
|
||||
#include <Dll/Dll.h>
|
||||
|
||||
namespace Dll
|
||||
@ -5,6 +7,16 @@ namespace Dll
|
||||
HMODULE g_currentModule = nullptr;
|
||||
Procs g_origProcs = {};
|
||||
Procs g_jmpTargetProcs = {};
|
||||
|
||||
HANDLE createThread(unsigned(__stdcall* threadProc)(void*), unsigned int* threadId, int priority)
|
||||
{
|
||||
HANDLE thread = reinterpret_cast<HANDLE>(_beginthreadex(nullptr, 0, threadProc, nullptr, 0, threadId));
|
||||
if (thread)
|
||||
{
|
||||
SetThreadPriority(thread, priority);
|
||||
}
|
||||
return thread;
|
||||
}
|
||||
}
|
||||
|
||||
#define CREATE_PROC_STUB(procName) \
|
||||
|
@ -67,6 +67,8 @@ namespace Dll
|
||||
#undef ADD_FARPROC_MEMBER
|
||||
};
|
||||
|
||||
HANDLE createThread(unsigned(__stdcall* threadProc)(void*), unsigned int* threadId, int priority);
|
||||
|
||||
extern HMODULE g_currentModule;
|
||||
extern Procs g_origProcs;
|
||||
extern Procs g_jmpTargetProcs;
|
||||
|
@ -10,7 +10,7 @@ namespace
|
||||
const UINT WM_SETPRESENTATIONWINDOWRGN = WM_USER + 2;
|
||||
|
||||
HANDLE g_presentationWindowThread = nullptr;
|
||||
DWORD g_presentationWindowThreadId = 0;
|
||||
unsigned g_presentationWindowThreadId = 0;
|
||||
HWND g_messageWindow = nullptr;
|
||||
|
||||
LRESULT CALLBACK messageWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
@ -80,10 +80,8 @@ namespace
|
||||
return CALL_ORIG_FUNC(DefWindowProc)(hwnd, uMsg, wParam, lParam);
|
||||
}
|
||||
|
||||
DWORD WINAPI presentationWindowThreadProc(LPVOID /*lpParameter*/)
|
||||
unsigned WINAPI presentationWindowThreadProc(LPVOID /*lpParameter*/)
|
||||
{
|
||||
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
|
||||
|
||||
WNDCLASS wc = {};
|
||||
wc.lpfnWndProc = &messageWindowProc;
|
||||
wc.hInstance = Dll::g_currentModule;
|
||||
@ -138,8 +136,7 @@ namespace Gdi
|
||||
wc.lpszClassName = "DDrawCompatPresentationWindow";
|
||||
CALL_ORIG_FUNC(RegisterClassA)(&wc);
|
||||
|
||||
g_presentationWindowThread = CreateThread(
|
||||
nullptr, 0, &presentationWindowThreadProc, nullptr, 0, &g_presentationWindowThreadId);
|
||||
Dll::createThread(presentationWindowThreadProc, &g_presentationWindowThreadId, THREAD_PRIORITY_TIME_CRITICAL);
|
||||
|
||||
int i = 0;
|
||||
while (!g_messageWindow && i < 1000)
|
||||
|
Loading…
x
Reference in New Issue
Block a user