http://bugs.winehq.org/show_bug.cgi?id=20865
--- Comment #18 from Austin Lund austin.lund@gmail.com 2010-06-21 19:43:28 --- What I don't get is why SetWindowPos needs to be called twice. From what I can gather in the code, it goes something like this:
Call to SetWindowPos() wineserver set_window_pos request is sent and updates x11drv position request sent to X server to move window ConfigureNotify event received (asynchronously) SetWindowPos() called with XEvent window information
If the X server's window position doesn't match that of the x11drv then clearly this will go back and forwards until they do agree. Why is there the need to recursively call SetWindowPos? Surely SetWindowPos should just set the x11drv position and then the driver just does it's thing. If the window manager doesn't like the new position then the driver should try it's best to fix things up and send WM_WINDOWPOSCHANGED, etc. if the size doesn't match what was requested.