/dev/windows and select() [was Re: Slow response to keypresses in xorg-server-1.8.0-1]
Jon TURNEY
jon.turney@dronecode.org.uk
Sun Aug 29 14:17:00 GMT 2010
On 08/08/2010 12:04, Andy Koppe wrote:
> On 7 August 2010 23:07, Jon TURNEY wrote:
>> Hmmm, looking again at the implementation of select(), I don't immediately
>> see that when waiting on /dev/windows, it checks that the message queue has
>> old messages on it before waiting. The MSDN documentation for
>> MsgWaitForMultipleObjects() seems to says that messages which had arrived
>> before the last PeekMessage() etc. aren't considered new and so don't end
>> the wait?
>
> I think you're right, a call to PeekMessage is needed for proper
> select() semantics: it shouldn't block if data is available for
> reading.
Attached is a small test-case which seems to demonstrate this problem.
Run ./dev-windows-select-test and observe select() blocks for the full
timeout, despite the fact that the /dev/windows fd is ready for reading (and
it reported as such as the end of the timeout)
If you run './dev-windows-select-test -skip' to skip the PeekMessage(),
select() returns immediately, indicating the /dev/windows fd is ready for reading.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: dev-windows-select-test.c
URL: <http://cygwin.com/pipermail/cygwin-xfree/attachments/20100829/d066510f/attachment.c>
-------------- next part --------------
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://x.cygwin.com/docs/
FAQ: http://x.cygwin.com/docs/faq/
More information about the Cygwin-xfree
mailing list