Dmitry Timoshkov wrote:
"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?
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);
I've tried it and it ran without problem. I also tried a few variants, without getting an infinite loop.
Rob