Regression in update region handling
Dmitry Timoshkov
dmitry at codeweavers.com
Mon Jan 24 06:46:14 CST 2005
"Alexandre Julliard" <julliard at 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 at yahoo.com>
To: <wine-devel at 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);
--
Dmitry.
More information about the wine-devel
mailing list