From b6834bf2a144917e8e82de863d87d6cf5553e6af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Camilla=20L=C3=B6wy?= Date: Sun, 18 Jul 2021 21:24:15 +0200 Subject: [PATCH] Win32: Remove timeGetTime fallback for timer The performance counter API is guaranteed to succeed on Windows XP and later so there is no need for a fallback. This removes our last dependency on winmm. --- src/win32_init.c | 14 -------------- src/win32_platform.h | 10 ---------- src/win32_time.c | 24 ++++-------------------- 3 files changed, 4 insertions(+), 44 deletions(-) diff --git a/src/win32_init.c b/src/win32_init.c index 53acab54..3441173f 100644 --- a/src/win32_init.c +++ b/src/win32_init.c @@ -71,17 +71,6 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved) // static GLFWbool loadLibraries(void) { - _glfw.win32.winmm.instance = _glfwPlatformLoadModule("winmm.dll"); - if (!_glfw.win32.winmm.instance) - { - _glfwInputErrorWin32(GLFW_PLATFORM_ERROR, - "Win32: Failed to load winmm.dll"); - return GLFW_FALSE; - } - - _glfw.win32.winmm.GetTime = (PFN_timeGetTime) - _glfwPlatformGetModuleSymbol(_glfw.win32.winmm.instance, "timeGetTime"); - _glfw.win32.user32.instance = _glfwPlatformLoadModule("user32.dll"); if (!_glfw.win32.user32.instance) { @@ -179,9 +168,6 @@ static void freeLibraries(void) if (_glfw.win32.dinput8.instance) _glfwPlatformFreeModule(_glfw.win32.dinput8.instance); - if (_glfw.win32.winmm.instance) - _glfwPlatformFreeModule(_glfw.win32.winmm.instance); - if (_glfw.win32.user32.instance) _glfwPlatformFreeModule(_glfw.win32.user32.instance); diff --git a/src/win32_platform.h b/src/win32_platform.h index a33e4e4b..465713cb 100644 --- a/src/win32_platform.h +++ b/src/win32_platform.h @@ -266,10 +266,6 @@ typedef enum #define ERROR_INVALID_PROFILE_ARB 0x2096 #define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054 -// winmm.dll function pointer typedefs -typedef DWORD (WINAPI * PFN_timeGetTime)(void); -#define timeGetTime _glfw.win32.winmm.GetTime - // xinput.dll function pointer typedefs typedef DWORD (WINAPI * PFN_XInputGetCapabilities)(DWORD,DWORD,XINPUT_CAPABILITIES*); typedef DWORD (WINAPI * PFN_XInputGetState)(DWORD,XINPUT_STATE*); @@ -459,11 +455,6 @@ typedef struct _GLFWlibraryWin32 int rawInputSize; UINT mouseTrailSize; - struct { - HINSTANCE instance; - PFN_timeGetTime GetTime; - } winmm; - struct { HINSTANCE instance; PFN_DirectInput8Create Create; @@ -531,7 +522,6 @@ typedef struct _GLFWcursorWin32 // typedef struct _GLFWtimerWin32 { - GLFWbool hasPC; uint64_t frequency; } _GLFWtimerWin32; diff --git a/src/win32_time.c b/src/win32_time.c index 2b1cbf0d..a1c64141 100644 --- a/src/win32_time.c +++ b/src/win32_time.c @@ -36,30 +36,14 @@ void _glfwPlatformInitTimer(void) { - uint64_t frequency; - - if (QueryPerformanceFrequency((LARGE_INTEGER*) &frequency)) - { - _glfw.timer.win32.hasPC = GLFW_TRUE; - _glfw.timer.win32.frequency = frequency; - } - else - { - _glfw.timer.win32.hasPC = GLFW_FALSE; - _glfw.timer.win32.frequency = 1000; - } + QueryPerformanceFrequency((LARGE_INTEGER*) &_glfw.timer.win32.frequency); } uint64_t _glfwPlatformGetTimerValue(void) { - if (_glfw.timer.win32.hasPC) - { - uint64_t value; - QueryPerformanceCounter((LARGE_INTEGER*) &value); - return value; - } - else - return (uint64_t) timeGetTime(); + uint64_t value; + QueryPerformanceCounter((LARGE_INTEGER*) &value); + return value; } uint64_t _glfwPlatformGetTimerFrequency(void)