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