This is fallout from a change [1] to the way we process Windows messages
to handle large bursts of them overflowing the Xserver's internal event
queue.
It seems that sometimes /dev/windows doesn't seem ready to select() even
when there is still Windows messages to process. I can't quite
understand how this happens. I don't think this is a bug in cygwin, but
probably something subtle to do with message ordering and nonqueued
messages (like WM_ACTIVATE).
Anyhow, I've cooked up a small additional change which should prevent
this blocking behaviour and uploaded a build [2]. It seems to resolve
the problem in this specific case. Perhaps you could try it out and see
if it helps?
[1] http://cygwin.com/ml/cygwin-xfree/2010-02/msg00124.html
[2] ftp://cygwin.com/pub/cygwinx/XWin.20100630-git-bc2f74e105146c36.exe.bz2