Skip to content

Commit 4b88670

Browse files
committed
Fix GetWindowDpiAwarenessContext NULL check
1 parent 288d77e commit 4b88670

File tree

1 file changed

+7
-15
lines changed

1 file changed

+7
-15
lines changed

src/display.c

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ PyImaging_GrabScreenWin32(PyObject *self, PyObject *args) {
329329
HWND wnd;
330330
DWORD rop;
331331
PyObject *buffer;
332-
HANDLE dpiAwareness;
332+
HANDLE dpiAwareness = NULL;
333333
HMODULE user32;
334334
Func_GetWindowDpiAwarenessContext GetWindowDpiAwarenessContext_function;
335335
Func_SetThreadDpiAwarenessContext SetThreadDpiAwarenessContext_function;
@@ -359,23 +359,15 @@ PyImaging_GrabScreenWin32(PyObject *self, PyObject *args) {
359359
user32 = LoadLibraryA("User32.dll");
360360
SetThreadDpiAwarenessContext_function = (Func_SetThreadDpiAwarenessContext
361361
)GetProcAddress(user32, "SetThreadDpiAwarenessContext");
362+
GetWindowDpiAwarenessContext_function = (Func_GetWindowDpiAwarenessContext
363+
)GetProcAddress(user32, "GetWindowDpiAwarenessContext");
362364
if (SetThreadDpiAwarenessContext_function != NULL) {
363-
if (screens == -1) {
364-
GetWindowDpiAwarenessContext_function = (Func_GetWindowDpiAwarenessContext
365-
)GetProcAddress(user32, "GetWindowDpiAwarenessContext");
366-
DPI_AWARENESS_CONTEXT dpiAwarenessContext =
365+
if (screens == -1 && GetWindowDpiAwarenessContext_function != NULL) {
366+
dpiAwareness =
367367
GetWindowDpiAwarenessContext_function(wnd);
368-
if (GetWindowDpiAwarenessContext_function != NULL &&
369-
dpiAwarenessContext != NULL) {
370-
dpiAwareness =
371-
SetThreadDpiAwarenessContext_function(dpiAwarenessContext);
372-
} else {
373-
dpiAwareness = SetThreadDpiAwarenessContext_function((HANDLE)-3);
374-
}
375-
} else {
376-
// DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = ((DPI_CONTEXT_HANDLE)-3)
377-
dpiAwareness = SetThreadDpiAwarenessContext_function((HANDLE)-3);
378368
}
369+
// DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = ((DPI_CONTEXT_HANDLE)-3)
370+
dpiAwareness = SetThreadDpiAwarenessContext_function(dpiAwareness == NULL ? (HANDLE)-3 : dpiAwareness);
379371
}
380372

381373
if (screens == 1) {

0 commit comments

Comments
 (0)