Wait for XEvents when changing window size
authorFraser Waters <fraser.waters@arm.com>
Mon, 10 Jul 2017 15:57:40 +0000 (16:57 +0100)
committerFraser Waters <fraser.waters@arm.com>
Mon, 10 Jul 2017 15:57:40 +0000 (16:57 +0100)
commita7f43f3f051de2e789e221f7ebcfd44d1a2f6276
tree9cdd3feb59c6d59c0e608158ef971bfad6a9b89c
parent9ea1f55139a086be8bd605271c3ed13a080e6a27
Wait for XEvents when changing window size

Fixes #259

Reading from GameWindow.ClientSize after assigning a new value to it
could often return the old value on X systems.
This was due to ClientSize being set by a ConfigureNotify event sent
by the X server that we would sometimes not during the ProcessEvents
started by the ClientSize setter (due to the asynchronous nature or
client/server).

This commit adds a way to wait for a specific event type in
ProcessEvents. Just before calling ProcessEvents in the ClientSize
setter we set the wait type to ConfigureNotify. This should ensure
that ClientSize will not return until we've received the new size of
the window from the X server and updated our internal values for the
size of the window. Thus when ClientSize is then read immediately
after it is always the new size.

It's likely that some of the other property setters we have which call
ProcessEvents need a similar fix.
src/OpenTK/Platform/X11/X11GLNative.cs