- Rearrange screensaver wait codes around the MsgWaitForMultipleObjects function
- Fixes screensaver configuration windows blocking the control panel
- Refs: http://blogs.msdn.com/b/oldnewthing/archive/2005/02/17/375307.aspx and http://codereflect.com/2008/09/19/when-and-how-should-we-use-msgwaitformultipleobjects/

See issue #4213 for more details.

svn path=/trunk/; revision=47548
This commit is contained in:
Gregor Schneider 2010-06-03 18:47:37 +00:00
parent 42667f14a0
commit 10dc21e801

View file

@ -147,33 +147,32 @@ static BOOL
WaitForSettingsDialog(HWND hwndDlg,
HANDLE hProcess)
{
DWORD dwResult;
MSG msg;
while (TRUE)
{
DWORD Ret;
MSG msg;
while (PeekMessage(&msg,
NULL,
0,
0,
PM_REMOVE))
dwResult = MsgWaitForMultipleObjects(1,
&hProcess,
FALSE,
INFINITE,
QS_ALLINPUT);
if (dwResult == WAIT_OBJECT_0 + 1)
{
if (msg.message == WM_QUIT)
return FALSE;
if (IsDialogMessage(hwndDlg, &msg))
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
if (msg.message == WM_QUIT)
{
return FALSE;
}
if (IsDialogMessage(hwndDlg, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
Ret = MsgWaitForMultipleObjects(1,
&hProcess,
FALSE,
INFINITE,
QS_ALLINPUT);
if (Ret == (WAIT_OBJECT_0))
else
{
return TRUE;
}