Wine 20050310 redraw problems (specifically with Paint Shop Pro 7)
wine-devel at kievinfo.com
Thu May 5 16:13:55 CDT 2005
Ok try this. Not perfect, but the move in the right direction.
Thursday, May 5, 2005, 12:59:22 PM, you wrote:
> Looks like something I'm messing around right now. Give me few more hours I'll
> have a patch for you to try.
> Best regards,
> Thursday, May 5, 2005, 10:32:52 AM, you wrote:
>> On Thu, 2005-05-05 at 10:34 +0000, Jules Richardson wrote:
>>> Wine 20050211, 20050310, 20050419 (the three I've tried) all have this
>>> nasty redraw bug where the drawing canvas isn't being refreshed. So
>>> whatever the fault is, it crept in somewhere between 20040914 and
>> Right, whatever the problem is, it turned up in 20050111.
>> Versions prior to that handled the window creation / refresh correctly,
>> but at 20050111 and later the window isn't being cleared upon initial
>> creation and isn't being refreshed when the window is partially or
>> wholly obscured by anything and then made visible again.
>> Note that PSP drawing tools *do* work - i.e. I can draw with the pen
>> tool say, and the window contents are updated fine. It seems to be
>> interaction with "external" things (tooltips, other windows etc.) that
>> has been broken.
>> Unless someone can point me at how to get a call trace out of Wine (one
>> that isn't several GB :-) this is about at the limit of what I can do
>> though - my C coding is rather rusty and I likely don't have the time to
>> read up on how the debugger etc. work. Doubtless a call trace would be
>> useful in pinpointing the problem though...
-------------- next part --------------
RCS file: /home/wine/wine/dlls/x11drv/winpos.c,v
retrieving revision 1.133
diff -u -p -r1.133 winpos.c
--- dlls/x11drv/winpos.c 25 Mar 2005 16:47:04 -0000 1.133
+++ dlls/x11drv/winpos.c 5 May 2005 19:36:14 -0000
@@ -737,6 +797,9 @@ BOOL X11DRV_SetWindowPos( WINDOWPOS *win
SetForegroundWindow( winpos->hwnd );
+ if ((winpos->flags & SWP_SHOWWINDOW) && !(winpos->flags & SWP_DEFERERASE))
+ RedrawWindow ( winpos->hwnd, NULL, 0, RDW_ERASENOW | RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_NOCHILDREN );
/* And last, send the WM_WINDOWPOSCHANGED message */
TRACE("\tstatus flags = %04x\n", winpos->flags & SWP_AGG_STATUSFLAGS);
More information about the wine-devel