ownerdraw paint recursion in listbox

Dmitry Timoshkov dmitry at baikal.ru
Tue Nov 23 04:53:06 CST 2004


"Alexander Yaworsky" <yaworsky at migusoft.ru> wrote:

> http://migusoft.ru/misc/trace.bz2
>
> with added ERR()s, see attachment
>
> I cut the tail of log just before the first err:listbox. Note that
> there are two listboxes on the form. Both are initialized ok,
> wrong things begin after WM_KEYDOWN.

Thanks, now I see where the problem is. In responce to WM_DRAWITEM the app does:

SendMessage(hwndListbox, LB_GETITEMRECT, 0, &rc);
InvalidateRect(hwndListbox, &rc, FALSE);
UpdateWindow(hwndListbox);

which leads to an infinite loop.

A test program is needed to investigate what happens under Windows in that
case. If you have time please don't wait for me, go ahead and write one,
I'll have time to look at the problem only on weekend.

P.S.
In order to eliminate a lot of garbage in the relay logs I'm using the following
filter in ~/.wine/config:

[Debug]
"RelayExclude" =
"RtlEnterCriticalSection;RtlLeaveCriticalSection;_EnterSysLevel;_LeaveSysLevel;_ConfirmSysLevel;LOCAL_Alloc;LOCAL_Lock;LOCAL_Unlock;
LOCAL_Free;GDI_GetObjPtr;GDI_ReleaseObj;WIN_GetPtr;WIN_FindWndPtr;WIN_ReleaseWndPtr;USER_Unlock"

It makes relay logs a lot smaller and much more readable, give it a try.

--
Dmitry.





More information about the wine-devel mailing list