diff --git a/inc/main.h b/inc/main.h index ab790c7..a40daa1 100644 --- a/inc/main.h +++ b/inc/main.h @@ -24,6 +24,8 @@ #define CUTSCENE_WIDTH 640 #define CUTSCENE_HEIGHT 400 +#define WM_AUTORENDERER WM_USER+111 + extern char OpenglVersion[]; struct IDirectDrawImpl; diff --git a/src/main.c b/src/main.c index 5d2d446..e2d43ec 100644 --- a/src/main.c +++ b/src/main.c @@ -619,6 +619,14 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) return 0; } break; + case WM_AUTORENDERER: + { + mouse_unlock(); + ShowWindow(ddraw->hWnd, SW_MINIMIZE); + ShowWindow(ddraw->hWnd, SW_RESTORE); + mouse_lock(); + return 0; + } case WM_NCLBUTTONDBLCLK: { ToggleFullscreen(); diff --git a/src/render_soft.c b/src/render_soft.c index 40b73d0..b20deb9 100644 --- a/src/render_soft.c +++ b/src/render_soft.c @@ -56,17 +56,20 @@ BOOL detect_cutscene() DWORD WINAPI render_soft_main(void) { - Sleep(500); - DWORD warningEndTick = timeGetTime() + (15 * 1000); char warningText[512] = { 0 }; if (OpenglVersion[0]) { + if (!ddraw->windowed) + PostMessage(ddraw->hWnd, WM_AUTORENDERER, 0, 0); + snprintf( warningText, sizeof(warningText), "-WARNING- Using slow software rendering, please update your graphics card driver (%s)", strlen(OpenglVersion) > 10 ? "" : OpenglVersion); } + else + Sleep(500); DWORD tick_start = 0; DWORD tick_end = 0; @@ -95,7 +98,7 @@ DWORD WINAPI render_soft_main(void) { snprintf( debugText, sizeof(debugText), - "FPS: %lu | Time: %2.2f ms", + "FPS: %lu | Time: %2.2f ms ", frame_count, frameTime); frame_count = 0;