1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

typedef functions

This commit is contained in:
FunkyFr3sh 2021-02-18 10:04:05 +01:00
parent a65e3d9365
commit 2fd2de207a
3 changed files with 29 additions and 15 deletions

View File

@ -22,6 +22,12 @@ typedef struct _D3DKMT_CLOSEADAPTER {
UINT hAdapter; UINT hAdapter;
} D3DKMT_CLOSEADAPTER; } D3DKMT_CLOSEADAPTER;
typedef HRESULT(WINAPI* DWMFLUSHPROC)(VOID);
typedef HRESULT(WINAPI* DWMISCOMPOSITIONENABLEDPROC)(BOOL*);
typedef NTSTATUS(WINAPI* D3DKMTWAITFORVERTICALBLANKEVENTPROC)(const D3DKMT_WAITFORVERTICALBLANKEVENT* Arg1);
typedef NTSTATUS(WINAPI* D3DKMTOPENADAPTERFROMHDCPROC)(D3DKMT_OPENADAPTERFROMHDC* Arg1);
typedef NTSTATUS(WINAPI* D3DKMTCLOSEADAPTERPROC)(D3DKMT_CLOSEADAPTER* Arg1);
typedef struct fps_limiter typedef struct fps_limiter
{ {
DWORD tick_start; DWORD tick_start;
@ -35,11 +41,11 @@ typedef struct fps_limiter
D3DKMT_CLOSEADAPTER close_adapter; D3DKMT_CLOSEADAPTER close_adapter;
HMODULE gdi32_dll; HMODULE gdi32_dll;
HMODULE dwmapi_dll; HMODULE dwmapi_dll;
HRESULT(WINAPI* DwmFlush)(VOID); DWMFLUSHPROC DwmFlush;
HRESULT(WINAPI* DwmIsCompositionEnabled)(BOOL*); DWMISCOMPOSITIONENABLEDPROC DwmIsCompositionEnabled;
NTSTATUS(WINAPI* D3DKMTWaitForVerticalBlankEvent)(const D3DKMT_WAITFORVERTICALBLANKEVENT* Arg1); D3DKMTWAITFORVERTICALBLANKEVENTPROC D3DKMTWaitForVerticalBlankEvent;
NTSTATUS(WINAPI* D3DKMTOpenAdapterFromHdc)(D3DKMT_OPENADAPTERFROMHDC* Arg1); D3DKMTOPENADAPTERFROMHDCPROC D3DKMTOpenAdapterFromHdc;
NTSTATUS(WINAPI* D3DKMTCloseAdapter)(D3DKMT_CLOSEADAPTER* Arg1); D3DKMTCLOSEADAPTERPROC D3DKMTCloseAdapter;
BOOL got_adapter; BOOL got_adapter;
} fps_limiter; } fps_limiter;

View File

@ -39,22 +39,19 @@ void fpsl_init()
g_fpsl.dwmapi_dll = LoadLibraryA("dwmapi.dll"); g_fpsl.dwmapi_dll = LoadLibraryA("dwmapi.dll");
g_fpsl.DwmFlush = g_fpsl.DwmFlush =
(HRESULT(WINAPI*)(VOID))GetProcAddress(g_fpsl.dwmapi_dll, "DwmFlush"); (DWMFLUSHPROC)GetProcAddress(g_fpsl.dwmapi_dll, "DwmFlush");
g_fpsl.DwmIsCompositionEnabled = g_fpsl.DwmIsCompositionEnabled =
(HRESULT(WINAPI*)(BOOL*))GetProcAddress(g_fpsl.dwmapi_dll, "DwmIsCompositionEnabled"); (DWMISCOMPOSITIONENABLEDPROC)GetProcAddress(g_fpsl.dwmapi_dll, "DwmIsCompositionEnabled");
g_fpsl.D3DKMTWaitForVerticalBlankEvent = g_fpsl.D3DKMTWaitForVerticalBlankEvent =
(NTSTATUS(WINAPI*)(const D3DKMT_WAITFORVERTICALBLANKEVENT * Arg1)) (D3DKMTWAITFORVERTICALBLANKEVENTPROC)GetProcAddress(g_fpsl.gdi32_dll, "D3DKMTWaitForVerticalBlankEvent");
GetProcAddress(g_fpsl.gdi32_dll, "D3DKMTWaitForVerticalBlankEvent");
g_fpsl.D3DKMTOpenAdapterFromHdc = g_fpsl.D3DKMTOpenAdapterFromHdc =
(NTSTATUS(WINAPI*)(D3DKMT_OPENADAPTERFROMHDC * Arg1)) (D3DKMTOPENADAPTERFROMHDCPROC)GetProcAddress(g_fpsl.gdi32_dll, "D3DKMTOpenAdapterFromHdc");
GetProcAddress(g_fpsl.gdi32_dll, "D3DKMTOpenAdapterFromHdc");
g_fpsl.D3DKMTCloseAdapter = g_fpsl.D3DKMTCloseAdapter =
(NTSTATUS(WINAPI*)(D3DKMT_CLOSEADAPTER * Arg1)) (D3DKMTCLOSEADAPTERPROC)GetProcAddress(g_fpsl.gdi32_dll, "D3DKMTCloseAdapter");
GetProcAddress(g_fpsl.gdi32_dll, "D3DKMTCloseAdapter");
} }
BOOL fpsl_wait_for_vblank() BOOL fpsl_wait_for_vblank()

View File

@ -380,15 +380,26 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
case WM_NCMOUSELEAVE: case WM_NCMOUSELEAVE:
{ {
if (!g_ddraw->wine) /* hack: disable aero snap */ if (!g_ddraw->wine) /* hack: disable aero snap */
real_SetWindowLongA(g_ddraw->hwnd, GWL_STYLE, GetWindowLong(g_ddraw->hwnd, GWL_STYLE) | WS_MAXIMIZEBOX); {
LONG style = GetWindowLong(g_ddraw->hwnd, GWL_STYLE);
if (!(style & WS_MAXIMIZEBOX))
{
real_SetWindowLongA(g_ddraw->hwnd, GWL_STYLE, style | WS_MAXIMIZEBOX);
}
}
break; break;
} }
case WM_SYSCOMMAND: case WM_SYSCOMMAND:
if ((wParam & ~0x0F) == SC_MOVE && !g_ddraw->wine) /* hack: disable aero snap */ if ((wParam & ~0x0F) == SC_MOVE && !g_ddraw->wine) /* hack: disable aero snap */
{ {
real_SetWindowLongA(g_ddraw->hwnd, GWL_STYLE, GetWindowLong(g_ddraw->hwnd, GWL_STYLE) & ~WS_MAXIMIZEBOX); LONG style = GetWindowLong(g_ddraw->hwnd, GWL_STYLE);
if ((style & WS_MAXIMIZEBOX))
{
real_SetWindowLongA(g_ddraw->hwnd, GWL_STYLE, style & ~WS_MAXIMIZEBOX);
}
} }
if (wParam == SC_MAXIMIZE) if (wParam == SC_MAXIMIZE)