Fix GetWindowDpiAwarenessContext NULL check

This commit is contained in:
Nulano 2024-11-07 22:06:28 +01:00
parent 288d77efd6
commit 4b8867069b

View File

@ -329,7 +329,7 @@ PyImaging_GrabScreenWin32(PyObject *self, PyObject *args) {
HWND wnd; HWND wnd;
DWORD rop; DWORD rop;
PyObject *buffer; PyObject *buffer;
HANDLE dpiAwareness; HANDLE dpiAwareness = NULL;
HMODULE user32; HMODULE user32;
Func_GetWindowDpiAwarenessContext GetWindowDpiAwarenessContext_function; Func_GetWindowDpiAwarenessContext GetWindowDpiAwarenessContext_function;
Func_SetThreadDpiAwarenessContext SetThreadDpiAwarenessContext_function; Func_SetThreadDpiAwarenessContext SetThreadDpiAwarenessContext_function;
@ -359,23 +359,15 @@ PyImaging_GrabScreenWin32(PyObject *self, PyObject *args) {
user32 = LoadLibraryA("User32.dll"); user32 = LoadLibraryA("User32.dll");
SetThreadDpiAwarenessContext_function = (Func_SetThreadDpiAwarenessContext SetThreadDpiAwarenessContext_function = (Func_SetThreadDpiAwarenessContext
)GetProcAddress(user32, "SetThreadDpiAwarenessContext"); )GetProcAddress(user32, "SetThreadDpiAwarenessContext");
if (SetThreadDpiAwarenessContext_function != NULL) {
if (screens == -1) {
GetWindowDpiAwarenessContext_function = (Func_GetWindowDpiAwarenessContext GetWindowDpiAwarenessContext_function = (Func_GetWindowDpiAwarenessContext
)GetProcAddress(user32, "GetWindowDpiAwarenessContext"); )GetProcAddress(user32, "GetWindowDpiAwarenessContext");
DPI_AWARENESS_CONTEXT dpiAwarenessContext = if (SetThreadDpiAwarenessContext_function != NULL) {
GetWindowDpiAwarenessContext_function(wnd); if (screens == -1 && GetWindowDpiAwarenessContext_function != NULL) {
if (GetWindowDpiAwarenessContext_function != NULL &&
dpiAwarenessContext != NULL) {
dpiAwareness = dpiAwareness =
SetThreadDpiAwarenessContext_function(dpiAwarenessContext); GetWindowDpiAwarenessContext_function(wnd);
} else {
dpiAwareness = SetThreadDpiAwarenessContext_function((HANDLE)-3);
} }
} else {
// DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = ((DPI_CONTEXT_HANDLE)-3) // DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = ((DPI_CONTEXT_HANDLE)-3)
dpiAwareness = SetThreadDpiAwarenessContext_function((HANDLE)-3); dpiAwareness = SetThreadDpiAwarenessContext_function(dpiAwareness == NULL ? (HANDLE)-3 : dpiAwareness);
}
} }
if (screens == 1) { if (screens == 1) {