after last night move of queue management to the server, one of my test app stopped working. What happens is that it's waiting on a WM_TIMER message, but which is no longer triggered. After some investigation, it turned out that message retrieval did change a bit: - in previous code, if the QS_PAINT bit was set, but no window to redraw was found, then the QS_TIMER bit was tested - current code, returns from the server a WM_PAINT message in any case, and if no window can be found, then we retry the whole loop, and we don't check the timer case
for my, the wPaintCount was always > 1, meaning that the QS_PAINT bit was never reset
then, I investigated why the wPaintCount was > 1. It seems that when a visible window, needing some redraw, is hidden before the update takes place, then we don't update the paint count (which should be decreased)
the attached patch does take care of it (basically, if we find a hidden window with an update region, then we destroy the region, and clear the internal paint flag), but I don't think it's the best place to do it.
any better idea ?
A+