GdkWin32: Fix leak of screen HDC
authorLuca Bacci <luca.bacci982@gmail.com>
Fri, 4 Nov 2022 14:38:29 +0000 (15:38 +0100)
committerLuca Bacci <luca.bacci982@gmail.com>
Fri, 4 Nov 2022 14:41:11 +0000 (15:41 +0100)
gdk/win32/gdkproperty-win32.c

index 24c6c6957358d7a677e51dfb1d2a9c8ce2c9d82f..9b65b8d86a9f7e20ef7ea389e5f6cd6732cf5c4f 100644 (file)
@@ -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)
     {