Painting message order?

Mike Hearn m.hearn at signal.qinetiq.com
Tue Dec 3 08:59:31 CST 2002


Hi all,

My beloved SVG plugin broke again :( For some reason it's not repainting
properly, in fact, the only way I can force it to repaint when running
in wine desktop, internet explorer kiosk mode (ie it fills a window) is
by toggling high quality/low quality which controls antialiasing.


trace:message:SPY_EnterMessage (0x10041) L"{ATL:5303EA68}" message
[000f] WM_PAINT dispatched  wp=00000000 lp=00000000
trace:message:SPY_EnterMessage     (0x10041) L"{ATL:5303EA68}" message
[0085] WM_NCPAINT sent from self wp=00000001 lp=00000000
trace:message:SPY_EnterMessage         (0x10041)  DefWindowProc32:
WM_NCPAINT [0085]  wp=00000001 lp=00000000
trace:message:SPY_ExitMessage          (0x10041)  DefWindowProc32:
WM_NCPAINT [0085] returned 00000000
trace:message:SPY_ExitMessage      (0x10041) L"{ATL:5303EA68}" message
[0085] WM_NCPAINT returned 00000000
trace:message:SPY_EnterMessage     (0x10041) L"{ATL:5303EA68}" message
[0014] WM_ERASEBKGND sent from self wp=000008a8 lp=00000000
trace:message:SPY_ExitMessage      (0x10041) L"{ATL:5303EA68}" message
[0014] WM_ERASEBKGND returned 00000001
trace:message:SPY_ExitMessage  (0x10041) L"{ATL:5303EA68}" message
[000f] WM_PAINT returned 00000000

That's a message trace of the paint cycle (when I make it paint by
minimizing the wine window for instance.

It sends WM_PAINT, the does the NCPAINT thing which seems to be do do
with window borders, and then some ERASEBKGND messages come from
somewhere. I have a sneaking suspicion that the background gets erased
after it's painted and not before, but that's a total shot in the dark
and the absence of flicker kind of makes my theory look not so strong.

I did some traces with +gdi as well, but it wasn't very helpful. There
were lots of GetObjPtr and locking methods called, but I didn't see any
actual obviously drawing related calls. There was 1 warning: GetObjPtr
was called at one point with nil. What does this mean? I can't find any
documentation about GetObjPtr on google. I'll look at the sources later
to see if I can figure out what's wrong.

Anyway, my final question is : is there a way to alter the colour with
which the background is erased? Even if it screws up rendering elsewhere
just for debugging i'd like to see if I can make it display as anything
*except* offwhite. If so then it confirms my theory. Or are those
messages processed by the plugin itself?

thanks -mike

-- 
Mike Hearn <m.hearn at signal.qinetiq.com>
QinetiQ - Malvern Technology Center




More information about the wine-devel mailing list