Improve resize/co-dragging GTK
authorH.G.Muller <hgm@hgm-xboard.(none)>
Mon, 11 Apr 2016 18:44:27 +0000 (20:44 +0200)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Sun, 17 Apr 2016 08:24:59 +0000 (10:24 +0200)
commit9fb523a3a383401087a5ce5f1f59dada036e3c62
tree22330d09a34082d117e6e74020eadfc1e6a8751a
parent14b8ba6e96505b24eb49b28c10444c027e43f5b5
Improve resize/co-dragging GTK

The reconfigure event of the main board is not processed directly,
but sets a timeout to call the actual handler, which will be restarted
when new reconfigure events occur during the timeout period. This makes
that the (very timeconsuming) redrawing and moving of all windows
will only be done if the stream of events dries up.
  Unfortunately the ReSize routine called as part of the handling needs
to be interruptable, which can cause recursive calling of the reconfigure
handler. A variable 'busy' would ignore such recursion, but at the price
of missing the interrupting event completely. The attempted fix to set
a new timeout was flawed, as delayedDragTag would not have been cleared
at that point. So we threw it out. Now 'busy' is a counter, which will
remember if there were ignored recursion attempts, and then makes these
into a harmless tail recursion, to do the resize/drag once more, based
on the latest window parameters.
gtk/xboard.c