http://bugs.winehq.org/show_bug.cgi?id=33235
--- Comment #16 from Nikolay Sivov bunglehead@gmail.com 2013-03-19 12:27:38 CDT --- (In reply to comment #13)
and message loop based on PeekMessage without WaitMessage will consume all CPU cycles it can get. See also bug 30736, which is caused exactly by this.
It doesn't mean that in Windows it behaves like this.
You have a test application source attached that does not wait for message, if you run it on windows you'll see.
(In reply to comment #15)
(In reply to comment #14)
Interesting. Are you saying that the following loops are equivalent? while (GetMessage(&msg, NULL, 0, 0)) { DispatchMessage(&msg); }
while (1) { PeekMessage(&msg, NULL, 0, 0, PM_REMOVE); if(msg.message == WM_QUIT) break; DispatchMessage(&msg); }
No, they don't. But once you add a check for PeekMessage return value they are supposed to do pretty much the same.
Test case does check it.
If you have a look at the GetMessage implementation in Wine you will notice that it's essentially a loop around PeekMessage.
Yes, with infinite timeout wait.
Is it a five minute argument or a full half hour?