|
@@ -122,6 +122,30 @@ typedef enum PROCESS_DPI_AWARENESS
|
|
|
} PROCESS_DPI_AWARENESS;
|
|
|
#endif /*DPI_ENUMS_DECLARED*/
|
|
|
|
|
|
+// HACK: Define versionhelpers.h functions manually as MinGW lacks the header
|
|
|
+FORCEINLINE BOOL IsWindowsVersionOrGreater(WORD major, WORD minor, WORD sp)
|
|
|
+{
|
|
|
+ OSVERSIONINFOEXW osvi = { sizeof(osvi), major, minor, 0, 0, {0}, sp };
|
|
|
+ DWORD mask = VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR;
|
|
|
+ ULONGLONG cond = VerSetConditionMask(0, VER_MAJORVERSION, VER_GREATER_EQUAL);
|
|
|
+ cond = VerSetConditionMask(cond, VER_MINORVERSION, VER_GREATER_EQUAL);
|
|
|
+ cond = VerSetConditionMask(cond, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
|
|
|
+ return VerifyVersionInfoW(&osvi, mask, cond);
|
|
|
+}
|
|
|
+
|
|
|
+#define IsWindowsVistaOrGreater() \
|
|
|
+ IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA), \
|
|
|
+ LOBYTE(_WIN32_WINNT_VISTA), 0)
|
|
|
+#define IsWindows7OrGreater() \
|
|
|
+ IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7), \
|
|
|
+ LOBYTE(_WIN32_WINNT_WIN7), 0)
|
|
|
+#define IsWindows8OrGreater() \
|
|
|
+ IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN8), \
|
|
|
+ LOBYTE(_WIN32_WINNT_WIN8), 0)
|
|
|
+#define IsWindows8Point1OrGreater() \
|
|
|
+ IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINBLUE), \
|
|
|
+ LOBYTE(_WIN32_WINNT_WINBLUE), 0)
|
|
|
+
|
|
|
// HACK: Define macros that some xinput.h variants don't
|
|
|
#ifndef XINPUT_CAPS_WIRELESS
|
|
|
#define XINPUT_CAPS_WIRELESS 0x0002
|
|
@@ -173,8 +197,8 @@ typedef HRESULT (WINAPI * PFN_DirectInput8Create)(HINSTANCE,DWORD,REFIID,LPVOID*
|
|
|
// user32.dll function pointer typedefs
|
|
|
typedef BOOL (WINAPI * PFN_SetProcessDPIAware)(void);
|
|
|
typedef BOOL (WINAPI * PFN_ChangeWindowMessageFilterEx)(HWND,UINT,DWORD,PCHANGEFILTERSTRUCT);
|
|
|
-#define _glfw_SetProcessDPIAware _glfw.win32.user32.SetProcessDPIAware
|
|
|
-#define _glfw_ChangeWindowMessageFilterEx _glfw.win32.user32.ChangeWindowMessageFilterEx
|
|
|
+#define SetProcessDPIAware _glfw.win32.user32.SetProcessDPIAware_
|
|
|
+#define ChangeWindowMessageFilterEx _glfw.win32.user32.ChangeWindowMessageFilterEx_
|
|
|
|
|
|
// dwmapi.dll function pointer typedefs
|
|
|
typedef HRESULT (WINAPI * PFN_DwmIsCompositionEnabled)(BOOL*);
|
|
@@ -184,7 +208,7 @@ typedef HRESULT (WINAPI * PFN_DwmFlush)(VOID);
|
|
|
|
|
|
// shcore.dll function pointer typedefs
|
|
|
typedef HRESULT (WINAPI * PFN_SetProcessDpiAwareness)(PROCESS_DPI_AWARENESS);
|
|
|
-#define _glfw_SetProcessDpiAwareness _glfw.win32.shcore.SetProcessDpiAwareness
|
|
|
+#define SetProcessDpiAwareness _glfw.win32.shcore.SetProcessDpiAwareness_
|
|
|
|
|
|
typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
|
|
|
|
|
@@ -278,8 +302,8 @@ typedef struct _GLFWlibraryWin32
|
|
|
|
|
|
struct {
|
|
|
HINSTANCE instance;
|
|
|
- PFN_SetProcessDPIAware SetProcessDPIAware;
|
|
|
- PFN_ChangeWindowMessageFilterEx ChangeWindowMessageFilterEx;
|
|
|
+ PFN_SetProcessDPIAware SetProcessDPIAware_;
|
|
|
+ PFN_ChangeWindowMessageFilterEx ChangeWindowMessageFilterEx_;
|
|
|
} user32;
|
|
|
|
|
|
struct {
|
|
@@ -290,7 +314,7 @@ typedef struct _GLFWlibraryWin32
|
|
|
|
|
|
struct {
|
|
|
HINSTANCE instance;
|
|
|
- PFN_SetProcessDpiAwareness SetProcessDpiAwareness;
|
|
|
+ PFN_SetProcessDpiAwareness SetProcessDpiAwareness_;
|
|
|
} shcore;
|
|
|
|
|
|
} _GLFWlibraryWin32;
|