redraw windows while resizing/moving windows in multiwindow mode

Oliver Schmidt oschmidt-mailinglists@gmx.de
Sat Aug 20 22:41:00 GMT 2011


Hi,

the following patch is a quick & dirty hack to enable redrawing of 
windows while the user moves or resizes the window.

This patch should be seen as experimental proof that this can be done 
with only small changes in the source code.

The main problem with window resizing/moving under Windows is, that in 
the function invocation stack dix/Dispatch -> os/WaitForSomething -> 
WakeupHandler -> hw/xwin/winWakeupHandler -> Windows/DispatchMessage -> 
hw/xwin/winTopLevelWindowProc the Windows function DispatchMessage does 
not return while the user resizes/moves a window. This function only 
returns after the user releases the mouse button. However the 
dix/Dispatch functions must be run to allow the clients to process the 
queued redraw/resizing events.

The enclosed hack simply moves the invocation of DispatchMessage in 
winWakeupHandler outside WaitForSomething into Dispatch and breaks up 
the Dispatch function into a loop and inner dispatch handling that can 
be called from the winTopLevelWindowProc while WM_SIZE/WM_MOVE events 
are processed. This could further be improved by setting a windows timer 
while resizing moving to process clients messages even if the mouse is 
not moved while resizing (and therefore WM_SIZE/WM_MOVE events are not 
send).

What do you think about this idea? One problem here is, that the dix 
package is also affected. Of course some work must be done to cleanly 
integrate this into the existing dix/hw architecture.

Best regards,
Oliver
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: patch05.txt
URL: <http://cygwin.com/pipermail/cygwin-xfree/attachments/20110820/09194663/attachment.txt>
-------------- 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