From c94935c7eabfbd5ec93d839ca8f2d85c0486200d Mon Sep 17 00:00:00 2001 From: Joachim Henze Date: Tue, 6 Jul 2021 00:49:11 +0200 Subject: [PATCH] [0.4.13][DESK] Fix GetDC/ReleaseDC error management Fix missing ReleaseDC related to the spectrum (color depth) We leaked one device context for each bpp change within the desk.cpl-session, which gave the following logging when closing desk.cpl: (win32ss/user/ntuser/windc.c:749) err: [00060138] GetDC() without ReleaseDC()! 1 time for each leak. Partial backport of (#2707) Fix picked from 0.4.15-dev-2867-g d635ce0cc0336a9b77d243ddce946876f48ec4f6 --- dll/cpl/desk/settings.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dll/cpl/desk/settings.c b/dll/cpl/desk/settings.c index c8d4761a05a..dc59fc99008 100644 --- a/dll/cpl/desk/settings.c +++ b/dll/cpl/desk/settings.c @@ -472,8 +472,12 @@ OnBPPChanged(IN HWND hwndDlg, IN PSETTINGS_DATA pData) /* Show a new spectrum bitmap */ hSpectrumControl = GetDlgItem(hwndDlg, IDC_SETTINGS_SPECTRUM); hSpectrumDC = GetDC(hSpectrumControl); + if (hSpectrumDC == NULL) + return; + GetClientRect(hSpectrumControl, &client); ShowColorSpectrum(hSpectrumDC, &client, dmNewBitsPerPel, pData); + ReleaseDC(hSpectrumControl, hSpectrumDC); /* Find if new parameters are valid */ Current = pData->CurrentDisplayDevice->CurrentSettings;