This patch caused a regression in Winamp 2.91, and the top window is not repainted. I use with the folowing modifications in the ~/.wine/config:
; Winamp 2.91 runs good, but the title is eated. In desktop is better. [AppDefaults\winamp.exe\x11drv] "Desktop" = "560x700"
Em Sex 05 Dez 2003 01:42, Alexandre Julliard escreveu:
ChangeSet ID: 10338 CVSROOT: /opt/cvs-commit Module name: wine Changes by: julliard@wine.codeweavers.com 2003/12/04 22:42:43
Modified files: windows : painting.c
Log message: In RDW_ValidateParent, get rid of the parent update region if it is empty after the validation, to avoid a useless WM_PAINT.
Patch: http://cvs.winehq.com/patch.py?id=10338
Old revision New revision Changes Path 1.88 1.89 +9 -1 wine/windows/painting.c
Index: wine/windows/painting.c diff -u wine/windows/painting.c:1.88 wine/windows/painting.c:1.89 --- wine/windows/painting.c:1.88 Sun Dec 7 05:54:18 2003 +++ wine/windows/painting.c Sun Dec 7 05:54:18 2003 @@ -379,7 +379,15 @@ ptOffset.x = rect.left - rectParent.left; ptOffset.y = rect.top - rectParent.top; OffsetRgn( hrg, ptOffset.x, ptOffset.y ); - CombineRgn( wndParent->hrgnUpdate, wndParent->hrgnUpdate, hrg, RGN_DIFF ); + if (CombineRgn( wndParent->hrgnUpdate, wndParent->hrgnUpdate, hrg, RGN_DIFF ) == NULLREGION) + { + /* the update region has become empty */ + DeleteObject( wndParent->hrgnUpdate ); + wndParent->hrgnUpdate = 0; + wndParent->flags &= ~WIN_NEEDS_ERASEBKGND; + if( !(wndParent->flags & WIN_INTERNAL_PAINT) ) + add_paint_count( wndParent->hwndSelf, -1 ); + } OffsetRgn( hrg, -ptOffset.x, -ptOffset.y ); } }
Hi,
On Sun, Dec 07, 2003 at 03:51:01AM -0300, Marcelo Duarte wrote:
This patch caused a regression in Winamp 2.91, and the top window is not repainted.
Maybe (just *maybe*) the patch is actually very correct, but Winamp for some reason collects some more "dirty" data that just happens to be committed to screen by this random unrelated WM_PAINT message...
In other words: the dirty graphics area in Winamp should have been painted by some other Windows function already which is responsible for these graphics changes in Winamp. Since this seems to not get done, it appears that the superfluous WM_PAINT is necessary to clean their act up after the fact.
Thus the actual challenge would probably be to find the place where we should have issued the REAL WM_PAINT by one way or another, in order to make Winamp happy again...
Em Dom 07 Dez 2003 07:01, Andreas Mohr escreveu:
Hi,
On Sun, Dec 07, 2003 at 03:51:01AM -0300, Marcelo Duarte wrote:
This patch caused a regression in Winamp 2.91, and the top window is not repainted.
Maybe (just *maybe*) the patch is actually very correct, but Winamp for some reason collects some more "dirty" data that just happens to be committed to screen by this random unrelated WM_PAINT message...
Yes, you are correct. I made more some tests, also removing all and part of the code, and finished discovering that this patch is not the cause. This patch only made me to see that the problem existed.
In other words: the dirty graphics area in Winamp should have been painted by some other Windows function already which is responsible for these graphics changes in Winamp. Since this seems to not get done, it appears that the superfluous WM_PAINT is necessary to clean their act up after the fact.
Thus the actual challenge would probably be to find the place where we should have issued the REAL WM_PAINT by one way or another, in order to make Winamp happy again...
Yes, but nor I know for where to start and still has the problem of the heading not to appear if he will not be in desktop mode....