Wine 20050310 redraw problems (specifically with Paint Shop Pro 7)

Vitaliy Margolen 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,
>   Vitaliy

> 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
>>> 20050211.

>> 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...

>> cheers

>> Jules







-------------- next part --------------
Index: dlls/x11drv/winpos.c
===================================================================
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 mailing list