From bd0e59a795f911fc9443ba1ad0b66242c1c40836 Mon Sep 17 00:00:00 2001 From: VDm Date: Sat, 3 May 2025 15:54:49 +0400 Subject: [PATCH] fix(d3d): fix calling conventions --- src/gx/d3d/CGxDeviceD3d.cpp | 8 +++++--- src/gx/d3d/CGxDeviceD3d.hpp | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/gx/d3d/CGxDeviceD3d.cpp b/src/gx/d3d/CGxDeviceD3d.cpp index e9b355b..afceedd 100644 --- a/src/gx/d3d/CGxDeviceD3d.cpp +++ b/src/gx/d3d/CGxDeviceD3d.cpp @@ -225,11 +225,13 @@ int32_t CGxDeviceD3d::ILoadD3dLib(HINSTANCE& d3dLib, LPDIRECT3D9& d3d) { d3dLib = LoadLibrary(TEXT("d3d9.dll")); + typedef LPDIRECT3D9 (WINAPI *DIRECT3DCREATE9)(UINT SDKVersion); + if (d3dLib) { - auto d3dCreateProc = GetProcAddress(d3dLib, "Direct3DCreate9"); + auto d3dCreateProc = reinterpret_cast(GetProcAddress(d3dLib, "Direct3DCreate9")); if (d3dCreateProc) { - d3d = reinterpret_cast(d3dCreateProc()); + d3d = d3dCreateProc(D3D_SDK_VERSION); if (d3d) { return 1; @@ -258,7 +260,7 @@ void CGxDeviceD3d::IUnloadD3dLib(HINSTANCE& d3dLib, LPDIRECT3D9& d3d) { } } -LRESULT CGxDeviceD3d::WindowProcD3d(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { +LRESULT CALLBACK CGxDeviceD3d::WindowProcD3d(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { auto device = reinterpret_cast(GetWindowLongPtr(hWnd, GWLP_USERDATA)); switch (uMsg) { diff --git a/src/gx/d3d/CGxDeviceD3d.hpp b/src/gx/d3d/CGxDeviceD3d.hpp index c4b786b..95ef1ef 100644 --- a/src/gx/d3d/CGxDeviceD3d.hpp +++ b/src/gx/d3d/CGxDeviceD3d.hpp @@ -218,7 +218,7 @@ class CGxDeviceD3d : public CGxDevice { // Static functions static int32_t ILoadD3dLib(HINSTANCE& d3dLib, LPDIRECT3D9& d3d); static void IUnloadD3dLib(HINSTANCE& d3dLib, LPDIRECT3D9& d3d); - static LRESULT WindowProcD3d(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); + static LRESULT CALLBACK WindowProcD3d(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // Member variables HWND m_hwnd = nullptr;