From fce63191375c476cf0b1dc5cf31e261113dd812b Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Mon, 8 Nov 2021 03:18:28 +0100 Subject: [PATCH] re-enable d3d9 but only for windowed/borderless - default to opengl --- src/config.c | 38 ++++++++++++++++++++++++++++++++++++-- src/wndproc.c | 3 ++- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/config.c b/src/config.c index 67f2a9e..ccdf8b1 100644 --- a/src/config.c +++ b/src/config.c @@ -149,7 +149,18 @@ void cfg_load() { g_ddraw->renderer = gdi_render_main; } - else /* opengl */ + else if (tolower(tmp[0]) == 'd') /* direct3d9 */ + { + g_ddraw->renderer = d3d9_render_main; + + if (!g_ddraw->windowed) + { + g_ddraw->fullscreen = TRUE; + g_ddraw->windowed = TRUE; + g_config.window_rect.left = g_config.window_rect.top = -32000; + } + } + else if (tolower(tmp[0]) == 'o') /* opengl */ { if (oglu_load_dll()) { @@ -161,6 +172,29 @@ void cfg_load() g_ddraw->renderer = gdi_render_main; } } + else /* auto */ + { + if (!g_ddraw->wine && d3d9_is_available()) + { + g_ddraw->renderer = d3d9_render_main; + + if (!g_ddraw->windowed) + { + g_ddraw->fullscreen = TRUE; + g_ddraw->windowed = TRUE; + g_config.window_rect.left = g_config.window_rect.top = -32000; + } + } + else if (oglu_load_dll()) + { + g_ddraw->renderer = ogl_render_main; + } + else + { + g_ddraw->show_driver_warning = TRUE; + g_ddraw->renderer = gdi_render_main; + } + } } void cfg_save() @@ -252,7 +286,7 @@ static void cfg_create_ini() "posY=-32000\n" "\n" "; Renderer, possible values: auto, opengl, gdi, direct3d9 (auto = try direct3d9/opengl, fallback = gdi)\n" - "renderer=auto\n" + "renderer=opengl\n" "\n" "; Developer mode (don't lock the cursor)\n" "devmode=false\n" diff --git a/src/wndproc.c b/src/wndproc.c index d38deff..a8c085c 100644 --- a/src/wndproc.c +++ b/src/wndproc.c @@ -587,7 +587,8 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam wParam == g_ddraw->hotkeys.toggle_fullscreen && !g_ddraw->fullscreen && context_code && - !key_state) + !key_state && + g_ddraw->renderer != d3d9_render_main) { util_toggle_fullscreen(); return 0;