From 95c121b6d6933e73a8dcbd49bec81a8e1225efe6 Mon Sep 17 00:00:00 2001 From: Luca Bacci Date: Fri, 4 Nov 2022 15:38:29 +0100 Subject: [PATCH] GdkWin32: Fix leak of screen HDC --- gdk/win32/gdkproperty-win32.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/gdk/win32/gdkproperty-win32.c b/gdk/win32/gdkproperty-win32.c index 24c6c69573..9b65b8d86a 100644 --- a/gdk/win32/gdkproperty-win32.c +++ b/gdk/win32/gdkproperty-win32.c @@ -160,17 +160,22 @@ _gdk_win32_get_setting (const char *name, if (display->dpi_aware_type == PROCESS_SYSTEM_DPI_AWARE && !display->has_fixed_scale) { - int dpi = GetDeviceCaps (GetDC (NULL), LOGPIXELSX); - if (dpi >= 96) + HDC hdc = GetDC (NULL); + + if (hdc != NULL) { - int xft_dpi = 1024 * dpi / display->surface_scale; - g_value_set_int (value, xft_dpi); - GDK_NOTE(MISC, g_print ("gdk_screen_get_setting(\"%s\") : %d\n", name, xft_dpi)); - return TRUE; + int dpi = GetDeviceCaps (GetDC (NULL), LOGPIXELSX); + ReleaseDC (NULL, hdc); + + if (dpi >= 96) + { + int xft_dpi = 1024 * dpi / display->surface_scale; + GDK_NOTE(MISC, g_print ("gdk_screen_get_setting(\"%s\") : %d\n", name, xft_dpi)); + g_value_set_int (value, xft_dpi); + return TRUE; + } } } - - return FALSE; } else if (strcmp ("gtk-xft-hinting", name) == 0) { -- 2.30.2