From e9b585f440a9c5d5ea891262501a72d18996914e Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sat, 4 Nov 2023 03:20:30 +0100 Subject: [PATCH] move is_wine bool to g_config --- inc/config.h | 1 + inc/dd.h | 1 - src/config.c | 2 ++ src/dd.c | 9 ++++----- src/ddsurface.c | 2 +- src/opengl_utils.c | 3 ++- src/wndproc.c | 10 +++++----- 7 files changed, 15 insertions(+), 13 deletions(-) diff --git a/inc/config.h b/inc/config.h index f609bab..2b2435e 100644 --- a/inc/config.h +++ b/inc/config.h @@ -16,6 +16,7 @@ typedef struct CNCDDRAWCONFIG char process_file_name[MAX_PATH]; char process_file_ext[MAX_PATH]; INIFILE ini; + BOOL is_wine; /* Optional settings */ diff --git a/inc/dd.h b/inc/dd.h index 1ab5d64..2e3e09f 100644 --- a/inc/dd.h +++ b/inc/dd.h @@ -124,7 +124,6 @@ typedef struct CNCDDRAW BOOL iscnc1; BOOL iskkndx; LONG upscale_hack_active; - BOOL wine; HCURSOR old_cursor; int show_cursor_count; BOOL alt_key_down; diff --git a/src/config.c b/src/config.c index 75afda6..b8209a1 100644 --- a/src/config.c +++ b/src/config.c @@ -1067,6 +1067,8 @@ static void cfg_create_ini() static void cfg_init() { + g_config.is_wine = real_GetProcAddress(GetModuleHandleA("ntdll.dll"), "wine_get_version") != 0; + /* get process filename and directory */ if (GetModuleFileNameA(NULL, g_config.game_path, sizeof(g_config.game_path) - 1) > 0) { diff --git a/src/dd.c b/src/dd.c index 81d4109..47a0b36 100644 --- a/src/dd.c +++ b/src/dd.c @@ -855,7 +855,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl if (g_config.remove_menu && GetMenu(g_ddraw->hwnd)) SetMenu(g_ddraw->hwnd, NULL); - if (!g_ddraw->wine) + if (!g_config.is_wine) { MSG msg; /* workaround for "Not Responding" window problem in cnc games */ real_PeekMessageA(&msg, g_ddraw->hwnd, 0, 0, PM_NOREMOVE | PM_QS_INPUT); @@ -888,7 +888,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl real_SetWindowLongA(g_ddraw->hwnd, GWL_EXSTYLE, exstyle & ~(WS_EX_TOOLWINDOW)); } - if (g_ddraw->wine) + if (g_config.is_wine) { real_SetWindowLongA( g_ddraw->hwnd, @@ -1015,7 +1015,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl return dd_SetDisplayMode(dwWidth, dwHeight, dwBPP, dwFlags); } - if (g_ddraw->wine) + if (g_config.is_wine) { real_SetWindowLongA( g_ddraw->hwnd, @@ -1391,7 +1391,6 @@ HRESULT dd_CreateEx(GUID* lpGuid, LPVOID* lplpDD, REFIID iid, IUnknown* pUnkOute InitializeCriticalSection(&g_ddraw->cs); g_ddraw->render.sem = CreateSemaphore(NULL, 0, 1, NULL); - g_ddraw->wine = real_GetProcAddress(GetModuleHandleA("ntdll.dll"), "wine_get_version") != 0; g_blt_use_avx = util_is_avx_supported(); if (g_config.minfps > 1000) @@ -1473,7 +1472,7 @@ HRESULT dd_CreateEx(GUID* lpGuid, LPVOID* lplpDD, REFIID iid, IUnknown* pUnkOute } else /* auto */ { - if (!g_ddraw->wine && d3d9_is_available()) + if (!g_config.is_wine && d3d9_is_available()) { g_ddraw->renderer = d3d9_render_main; } diff --git a/src/ddsurface.c b/src/ddsurface.c index bf47588..09ade3b 100644 --- a/src/ddsurface.c +++ b/src/ddsurface.c @@ -955,7 +955,7 @@ HRESULT dds_Lock( dbg_dump_dds_lock_flags(dwFlags); - if (g_ddraw && g_config.fixnotresponding && !g_ddraw->wine) + if (g_ddraw && g_config.fixnotresponding && !g_config.is_wine) { MSG msg; /* workaround for "Not Responding" window problem */ real_PeekMessageA(&msg, g_ddraw->hwnd, 0, 0, PM_NOREMOVE); diff --git a/src/opengl_utils.c b/src/opengl_utils.c index e775a90..a1bfbae 100644 --- a/src/opengl_utils.c +++ b/src/opengl_utils.c @@ -4,6 +4,7 @@ #include "dd.h" #include "debug.h" #include "hook.h" +#include "config.h" PFNWGLCREATECONTEXTPROC xwglCreateContext; PFNWGLDELETECONTEXTPROC xwglDeleteContext; @@ -211,7 +212,7 @@ void oglu_init() glEnableVertexAttribArray && glUniform2fv && glUniformMatrix4fv && glGenVertexArrays && glBindVertexArray && glGetUniformLocation; - if (g_ddraw->wine && glversion && glversion[0] == '2') // macOS + if (g_config.is_wine && glversion && glversion[0] == '2') // macOS { g_oglu_got_version3 = FALSE; wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)xwglGetProcAddress("wglCreateContextAttribsARB"); diff --git a/src/wndproc.c b/src/wndproc.c index aaa85a3..930a5c1 100644 --- a/src/wndproc.c +++ b/src/wndproc.c @@ -228,7 +228,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam pos->hwndInsertAfter, pos->x, pos->y, pos->cx, pos->cy); */ - if (g_ddraw->wine && + if (g_config.is_wine && !g_config.windowed && (pos->x > 0 || pos->y > 0) && g_ddraw->last_set_window_pos_tick + 500 < timeGetTime()) @@ -460,7 +460,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam util_update_bnet_pos(x, y); } - if (in_size_move || (g_ddraw->wine && !g_config.fullscreen && g_ddraw->render.thread)) + if (in_size_move || (g_config.is_wine && !g_config.fullscreen && g_ddraw->render.thread)) { if (x != -32000) g_config.window_rect.left = x; /* -32000 = Exit/Minimize */ @@ -477,7 +477,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam } case WM_NCMOUSELEAVE: { - if (!g_ddraw->wine) /* hack: disable aero snap */ + if (!g_config.is_wine) /* hack: disable aero snap */ { LONG style = real_GetWindowLongA(g_ddraw->hwnd, GWL_STYLE); @@ -490,7 +490,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam } case WM_SYSCOMMAND: { - if ((wParam & ~0x0F) == SC_MOVE && !g_ddraw->wine) /* hack: disable aero snap */ + if ((wParam & ~0x0F) == SC_MOVE && !g_config.is_wine) /* hack: disable aero snap */ { LONG style = real_GetWindowLongA(g_ddraw->hwnd, GWL_STYLE); @@ -594,7 +594,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam mouse_unlock(); - if (g_ddraw->wine && g_ddraw->last_set_window_pos_tick + 500 > timeGetTime()) + if (g_config.is_wine && g_ddraw->last_set_window_pos_tick + 500 > timeGetTime()) return 0; if (!g_config.windowed)