Apparently MsgWaitForMultipleObjects doesn't always return the
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 28 Aug 2006 19:09:28 +0000 (19:09 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Mon, 28 Aug 2006 19:09:28 +0000 (19:09 +0000)
values one might expect, which means that GetMessage() was
occasionally blocking the process. That appears to be the last of
the annoying data loss issues, so I think the Windows serial back
end actually looks vaguely reliable now. Phew.

git-svn-id: svn://svn.tartarus.org/sgt/putty@6830 cda61777-01e9-0310-a592-d414129be87e

windows/window.c

index 81a28aa..4855de5 100644 (file)
@@ -836,9 +836,7 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
 
        sfree(handles);
 
-       if (GetMessage(&msg, NULL, 0, 0) != 1)
-           break;
-       do {
+       while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {
            if (msg.message == WM_QUIT)
                goto finished;         /* two-level break */
 
@@ -852,7 +850,7 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
             */
            if (must_close_session)
                close_session();
-       } while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE));
+       }
 
        /* The messages seem unreliable; especially if we're being tricky */
        term_set_focus(term, GetForegroundWindow() == hwnd);