- Do not use pGlobalData after freeing,

- do not load color spectrum bitmaps if no adapter found,
- do not use HEAP_ZERO_MEMORY, use memset(),
- check SelectObject() result,
- fix indentation.

svn path=/trunk/; revision=38196
This commit is contained in:
Dmitry Gorbachev 2008-12-20 11:06:21 +00:00
parent 7b6fe6680a
commit 5866c97424

View file

@ -1,7 +1,7 @@
/* /*
* COPYRIGHT: See COPYING in the top level directory * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Display Control Panel * PROJECT: ReactOS Display Control Panel
* FILE: lib/cpl/desk/settings.c * FILE: dll/cpl/desk/settings.c
* PURPOSE: Settings property page * PURPOSE: Settings property page
* *
* PROGRAMMERS: Trevor McCort (lycan359@gmail.com) * PROGRAMMERS: Trevor McCort (lycan359@gmail.com)
@ -286,13 +286,14 @@ OnInitDialog(IN HWND hwndDlg)
DISPLAY_DEVICE displayDevice; DISPLAY_DEVICE displayDevice;
PGLOBAL_DATA pGlobalData; PGLOBAL_DATA pGlobalData;
pGlobalData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(GLOBAL_DATA)); pGlobalData = HeapAlloc(GetProcessHeap(), 0, sizeof(GLOBAL_DATA));
if (pGlobalData == NULL) if (pGlobalData == NULL)
return; return;
SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData); SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
/* Get video cards list */ /* Get video cards list */
pGlobalData->DisplayDeviceList = NULL;
displayDevice.cb = (DWORD)sizeof(DISPLAY_DEVICE); displayDevice.cb = (DWORD)sizeof(DISPLAY_DEVICE);
while (EnumDisplayDevices(NULL, iDevNum, &displayDevice, 0x1)) while (EnumDisplayDevices(NULL, iDevNum, &displayDevice, 0x1))
{ {
@ -303,6 +304,7 @@ OnInitDialog(IN HWND hwndDlg)
} }
iDevNum++; iDevNum++;
} }
if (Result == 0) if (Result == 0)
{ {
/* No adapter found */ /* No adapter found */
@ -311,6 +313,10 @@ OnInitDialog(IN HWND hwndDlg)
EnableWindow(GetDlgItem(hwndDlg, IDC_SETTINGS_RESOLUTION_TEXT), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_SETTINGS_RESOLUTION_TEXT), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_SETTINGS_ADVANCED), FALSE); EnableWindow(GetDlgItem(hwndDlg, IDC_SETTINGS_ADVANCED), FALSE);
ShowWindow(GetDlgItem(hwndDlg, IDC_SETTINGS_SPECTRUM), SW_HIDE); ShowWindow(GetDlgItem(hwndDlg, IDC_SETTINGS_SPECTRUM), SW_HIDE);
/* Do not initialize the color spectrum bitmaps */
memset(pGlobalData->hSpectrumBitmaps, 0, sizeof(pGlobalData->hSpectrumBitmaps));
return;
} }
else if (Result == 1) else if (Result == 1)
{ {
@ -325,10 +331,10 @@ OnInitDialog(IN HWND hwndDlg)
monitors.Size.cy = pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight; monitors.Size.cy = pGlobalData->CurrentDisplayDevice->CurrentSettings->dmPelsHeight;
monitors.Flags = 0; monitors.Flags = 0;
SendDlgItemMessage(hwndDlg, SendDlgItemMessage(hwndDlg,
IDC_SETTINGS_MONSEL, IDC_SETTINGS_MONSEL,
MSLM_SETMONITORSINFO, MSLM_SETMONITORSINFO,
1, 1,
(LPARAM)&monitors); (LPARAM)&monitors);
} }
else /* FIXME: incomplete! */ else /* FIXME: incomplete! */
{ {
@ -352,10 +358,10 @@ OnInitDialog(IN HWND hwndDlg)
} }
SendDlgItemMessage(hwndDlg, SendDlgItemMessage(hwndDlg,
IDC_SETTINGS_MONSEL, IDC_SETTINGS_MONSEL,
MSLM_SETMONITORSINFO, MSLM_SETMONITORSINFO,
Result, Result,
(LPARAM)pMonitors); (LPARAM)pMonitors);
HeapFree(GetProcessHeap(), 0, pMonitors); HeapFree(GetProcessHeap(), 0, pMonitors);
} }
@ -401,12 +407,17 @@ ShowColorSpectrum(IN HDC hDC, IN LPRECT client, IN DWORD BitsPerPel, IN PGLOBAL_
default: iBitmap = 2; default: iBitmap = 2;
} }
SelectObject(hdcMem, pGlobalData->hSpectrumBitmaps[iBitmap]); if (SelectObject(hdcMem, pGlobalData->hSpectrumBitmaps[iBitmap]))
StretchBlt(hDC, {
client->left, client->top, client->right - client->left, client->bottom - client->top, StretchBlt(hDC,
hdcMem, 0, 0, client->left, client->top,
pGlobalData->cxSource[iBitmap], client->right - client->left,
pGlobalData->cySource[iBitmap], SRCCOPY); client->bottom - client->top,
hdcMem, 0, 0,
pGlobalData->cxSource[iBitmap],
pGlobalData->cySource[iBitmap], SRCCOPY);
}
DeleteDC(hdcMem); DeleteDC(hdcMem);
} }
@ -631,7 +642,6 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
if (lpDrawItem->CtlID == IDC_SETTINGS_SPECTRUM) if (lpDrawItem->CtlID == IDC_SETTINGS_SPECTRUM)
ShowColorSpectrum(lpDrawItem->hDC, &lpDrawItem->rcItem, pGlobalData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel, pGlobalData); ShowColorSpectrum(lpDrawItem->hDC, &lpDrawItem->rcItem, pGlobalData->CurrentDisplayDevice->CurrentSettings->dmBitsPerPel, pGlobalData);
break; break;
} }
case WM_COMMAND: case WM_COMMAND:
@ -834,13 +844,13 @@ SettingsPageProc(IN HWND hwndDlg, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lPar
Current = Next; Current = Next;
} }
HeapFree(GetProcessHeap(), 0, pGlobalData);
for (i = 0; i < NUM_SPECTRUM_BITMAPS; i++) for (i = 0; i < NUM_SPECTRUM_BITMAPS; i++)
{ {
if (pGlobalData->hSpectrumBitmaps[i]) if (pGlobalData->hSpectrumBitmaps[i])
DeleteObject(pGlobalData->hSpectrumBitmaps[i]); DeleteObject(pGlobalData->hSpectrumBitmaps[i]);
} }
HeapFree(GetProcessHeap(), 0, pGlobalData);
} }
} }
return FALSE; return FALSE;