mirror of
https://github.com/reactos/reactos.git
synced 2025-04-19 20:19:26 +00:00
[POWERCFG] Improve the error handling in AddPowerScheme() and keep track of the current power scheme.
This commit is contained in:
parent
4172325559
commit
077dcfedb9
1 changed files with 51 additions and 30 deletions
|
@ -51,7 +51,7 @@ UINT Sec[]=
|
||||||
|
|
||||||
|
|
||||||
static
|
static
|
||||||
PPOWER_SCHEME
|
BOOL
|
||||||
AddPowerScheme(
|
AddPowerScheme(
|
||||||
PPOWER_SCHEMES_PAGE_DATA pPageData,
|
PPOWER_SCHEMES_PAGE_DATA pPageData,
|
||||||
UINT uId,
|
UINT uId,
|
||||||
|
@ -62,21 +62,44 @@ AddPowerScheme(
|
||||||
PPOWER_POLICY pp)
|
PPOWER_POLICY pp)
|
||||||
{
|
{
|
||||||
PPOWER_SCHEME pScheme;
|
PPOWER_SCHEME pScheme;
|
||||||
|
BOOL bResult = FALSE;
|
||||||
|
|
||||||
pScheme = HeapAlloc(GetProcessHeap(),
|
pScheme = HeapAlloc(GetProcessHeap(),
|
||||||
HEAP_ZERO_MEMORY,
|
HEAP_ZERO_MEMORY,
|
||||||
sizeof(POWER_SCHEME));
|
sizeof(POWER_SCHEME));
|
||||||
if (pScheme == NULL)
|
if (pScheme == NULL)
|
||||||
return NULL;
|
return FALSE;
|
||||||
|
|
||||||
pScheme->pszName = HeapAlloc(GetProcessHeap(),
|
pScheme->uId = uId;
|
||||||
HEAP_ZERO_MEMORY,
|
CopyMemory(&pScheme->PowerPolicy, pp, sizeof(POWER_POLICY));
|
||||||
dwName + sizeof(TCHAR));
|
|
||||||
|
|
||||||
pScheme->pszDescription = HeapAlloc(GetProcessHeap(),
|
if (dwName != 0)
|
||||||
HEAP_ZERO_MEMORY,
|
{
|
||||||
dwDescription + sizeof(TCHAR));
|
pScheme->pszName = HeapAlloc(GetProcessHeap(),
|
||||||
if (pScheme->pszName == NULL || pScheme->pszDescription == NULL)
|
HEAP_ZERO_MEMORY,
|
||||||
|
dwName);
|
||||||
|
if (pScheme->pszName == NULL)
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
_tcscpy(pScheme->pszName, pszName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dwDescription != 0)
|
||||||
|
{
|
||||||
|
pScheme->pszDescription = HeapAlloc(GetProcessHeap(),
|
||||||
|
HEAP_ZERO_MEMORY,
|
||||||
|
dwDescription);
|
||||||
|
if (pScheme->pszDescription == NULL)
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
_tcscpy(pScheme->pszDescription, pszDescription);
|
||||||
|
}
|
||||||
|
|
||||||
|
InsertTailList(&pPageData->PowerSchemesList, &pScheme->ListEntry);
|
||||||
|
bResult = TRUE;
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (bResult == FALSE)
|
||||||
{
|
{
|
||||||
if (pScheme->pszName)
|
if (pScheme->pszName)
|
||||||
HeapFree(GetProcessHeap(), 0, pScheme->pszName);
|
HeapFree(GetProcessHeap(), 0, pScheme->pszName);
|
||||||
|
@ -85,18 +108,9 @@ AddPowerScheme(
|
||||||
HeapFree(GetProcessHeap(), 0, pScheme->pszDescription);
|
HeapFree(GetProcessHeap(), 0, pScheme->pszDescription);
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, pScheme);
|
HeapFree(GetProcessHeap(), 0, pScheme);
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pScheme->uId = uId;
|
return bResult;
|
||||||
_tcscpy(pScheme->pszName, pszName);
|
|
||||||
_tcscpy(pScheme->pszDescription, pszDescription);
|
|
||||||
|
|
||||||
CopyMemory(&pScheme->PowerPolicy, pp, sizeof(POWER_POLICY));
|
|
||||||
|
|
||||||
InsertTailList(&pPageData->PowerSchemesList, &pScheme->ListEntry);
|
|
||||||
|
|
||||||
return pScheme;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -276,7 +290,8 @@ Pos_InitData(
|
||||||
static
|
static
|
||||||
VOID
|
VOID
|
||||||
LoadConfig(
|
LoadConfig(
|
||||||
HWND hwndDlg)
|
HWND hwndDlg,
|
||||||
|
PPOWER_SCHEMES_PAGE_DATA pPageData)
|
||||||
{
|
{
|
||||||
PPOWER_SCHEME pScheme;
|
PPOWER_SCHEME pScheme;
|
||||||
INT i = 0, iCurSel = 0;
|
INT i = 0, iCurSel = 0;
|
||||||
|
@ -374,6 +389,9 @@ LoadConfig(
|
||||||
(LPARAM)0);
|
(LPARAM)0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_DELETE_BTN),
|
||||||
|
(pScheme != pPageData->pActivePowerScheme));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -470,7 +488,9 @@ Pos_InitPage(HWND hwndDlg)
|
||||||
|
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
Pos_SaveData(HWND hwndDlg)
|
Pos_SaveData(
|
||||||
|
HWND hwndDlg,
|
||||||
|
PPOWER_SCHEMES_PAGE_DATA pPageData)
|
||||||
{
|
{
|
||||||
PPOWER_SCHEME pScheme;
|
PPOWER_SCHEME pScheme;
|
||||||
INT iCurSel, tmp;
|
INT iCurSel, tmp;
|
||||||
|
@ -563,8 +583,11 @@ Pos_SaveData(HWND hwndDlg)
|
||||||
pScheme->PowerPolicy.mach.DozeS4TimeoutDc = Sec[tmp];
|
pScheme->PowerPolicy.mach.DozeS4TimeoutDc = Sec[tmp];
|
||||||
}
|
}
|
||||||
|
|
||||||
SetActivePwrScheme(pScheme->uId, NULL, &pScheme->PowerPolicy);
|
if (SetActivePwrScheme(pScheme->uId, NULL, &pScheme->PowerPolicy))
|
||||||
LoadConfig(hwndDlg);
|
{
|
||||||
|
pPageData->pActivePowerScheme = pScheme;
|
||||||
|
EnableWindow(GetDlgItem(hwndDlg, IDC_DELETE_BTN), FALSE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -601,8 +624,6 @@ DelScheme(HWND hwnd)
|
||||||
{
|
{
|
||||||
SendMessage(hList, CB_SETCURSEL, (WPARAM)0, 0);
|
SendMessage(hList, CB_SETCURSEL, (WPARAM)0, 0);
|
||||||
SendMessage(hList, CB_DELETESTRING, (WPARAM)iCurSel, 0);
|
SendMessage(hList, CB_DELETESTRING, (WPARAM)iCurSel, 0);
|
||||||
if (Current == pScheme->uId)
|
|
||||||
Pos_SaveData(hwnd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DeletePwrScheme(pScheme->uId) != 0)
|
if (DeletePwrScheme(pScheme->uId) != 0)
|
||||||
|
@ -624,7 +645,7 @@ CreateEnergyList(
|
||||||
POWER_POLICY pp;
|
POWER_POLICY pp;
|
||||||
SYSTEM_POWER_CAPABILITIES spc;
|
SYSTEM_POWER_CAPABILITIES spc;
|
||||||
HWND hwndList;
|
HWND hwndList;
|
||||||
unsigned aps = 0;
|
UINT aps = 0;
|
||||||
|
|
||||||
hwndList = GetDlgItem(hwndDlg, IDC_ENERGYLIST);
|
hwndList = GetDlgItem(hwndDlg, IDC_ENERGYLIST);
|
||||||
|
|
||||||
|
@ -683,7 +704,8 @@ CreateEnergyList(
|
||||||
TRUE,
|
TRUE,
|
||||||
(LPARAM)pScheme->pszName);
|
(LPARAM)pScheme->pszName);
|
||||||
|
|
||||||
LoadConfig(hwndDlg);
|
pPageData->pActivePowerScheme = pScheme;
|
||||||
|
LoadConfig(hwndDlg, pPageData);
|
||||||
}
|
}
|
||||||
|
|
||||||
ListEntry = ListEntry->Flink;
|
ListEntry = ListEntry->Flink;
|
||||||
|
@ -691,7 +713,6 @@ CreateEnergyList(
|
||||||
|
|
||||||
if (SendMessage(hwndList, CB_GETCOUNT, 0, 0) > 0)
|
if (SendMessage(hwndList, CB_GETCOUNT, 0, 0) > 0)
|
||||||
{
|
{
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_DELETE_BTN), TRUE);
|
|
||||||
EnableWindow(GetDlgItem(hwndDlg, IDC_SAVEAS_BTN), TRUE);
|
EnableWindow(GetDlgItem(hwndDlg, IDC_SAVEAS_BTN), TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -753,7 +774,7 @@ PowerSchemesDlgProc(
|
||||||
case IDC_ENERGYLIST:
|
case IDC_ENERGYLIST:
|
||||||
if (HIWORD(wParam) == CBN_SELCHANGE)
|
if (HIWORD(wParam) == CBN_SELCHANGE)
|
||||||
{
|
{
|
||||||
LoadConfig(hwndDlg);
|
LoadConfig(hwndDlg, pPageData);
|
||||||
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -786,7 +807,7 @@ PowerSchemesDlgProc(
|
||||||
LPNMHDR lpnm = (LPNMHDR)lParam;
|
LPNMHDR lpnm = (LPNMHDR)lParam;
|
||||||
if (lpnm->code == (UINT)PSN_APPLY)
|
if (lpnm->code == (UINT)PSN_APPLY)
|
||||||
{
|
{
|
||||||
Pos_SaveData(hwndDlg);
|
Pos_SaveData(hwndDlg, pPageData);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue