http://bugs.winehq.org/show_bug.cgi?id=32374
Bug #: 32374 Summary: List box with LBS_NODATA set, has very low performance, depending on items count. Product: Wine Version: unspecified Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: major Priority: P2 Component: user32 AssignedTo: wine-bugs@winehq.org ReportedBy: johnfound@evrocom.net Classification: Unclassified
Created attachment 42719 --> http://bugs.winehq.org/attachment.cgi?id=42719 Test application that illustrates the bug. Source code included.
List box control, when has LBS_NODATA style set, needs very big time to process LB_SETCOUNT message (this message works only for list box with LBS_NODATA set).
On Windows this message is handled for less than 1ms regardless of the count sent by LB_SETCOUNT (because the list box has nothing to allocate/reallocate when LBS_NODATA is set. It only need to set the scroll bar parameters).
In WINE (every version but in v1.4 and v1.5 it is really slow) processing this message needs some amount of time, proportional to the item count set by LB_SETCOUNT.
As long as this list box style is provided because of its speed, such a behavior can block the execution of the application for very long time.
Small test application is attached which measures the time needed for LB_SETCOUNT to be executed on list box with LBS_NODATA set. Source code included.