"Alexandre Julliard" julliard@wine.dyndns.org wrote:
It's probably a regression around GetUpdateRect and related functions. The easiest way to fix it would be to get me a copy of that app, if that's possible.
Haven't the code demonstrating the problem already been sent to the list?
----- Original Message ----- From: "Nick Hornback" vidar268@yahoo.com To: wine-devel@winehq.org Sent: Tuesday, January 11, 2005 7:20 AM Subject: Re: Fwd: Foobar2000 audio player Regression
I just mentioned the problem on foobars irc channel, and someone posted some sample WM_PAINT code that I believe is what you might have been looking for (BeginPaint isn't used anywhere). According to the foobar devs, and I've heard this from previous threads in the foobar forums when wine had issues with repainting the playlist, is that BeginPaint is not nessesary, and that seems to be a recuring problem with wine.
Attached is the code that was posted in the irc channel. I'm not enough of a dev to make sense of it, but hopefully it'll help.
Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
case WM_PAINT: { struct { RECT rcPaint; HDC hdc; } ps; if (!GetUpdateRect(wnd,&ps.rcPaint,0)) GetClientRect(wnd,&ps.rcPaint); ps.hdc = GetDC(wnd);
int min,max; min = display_offset + (ps.rcPaint.top/item_height); max = display_offset + (ps.rcPaint.bottom/item_height) + 2; int n; if (max>get_count()) max = get_count(); for(n=min;n<max;n++) repaint(n,ps.hdc,&ps.rcPaint); int blank_top = (get_count() - display_offset) * item_height; if (blank_top < ps.rcPaint.bottom) { RECT temp = ps.rcPaint; temp.top = blank_top; HBRUSH br = CreateSolidBrush(cfg_playlist_background); FillRect(ps.hdc,&temp,br); DeleteObject(br); } ReleaseDC(wnd,ps.hdc); ValidateRect(wnd,&ps.rcPaint);