comctl32: Fix bitmap size calculation
aleksey at reactos.org
Fri Mar 27 04:10:42 CDT 2009
On Mar 27, 2009, at 3:39 AM, Vitaliy Margolen wrote:
> Aleksey Bragin wrote:
>> Fix bitmap size calculation in IMAGELIST_InternalExpandBitmaps and
>> remove unneded parameter. Memory requirements are greatly reduced
>> this fix.
>> The bug was an ambiguous meaning of a cx parameter, which was
>> to be a width of an individual image inside the list, but width of a
>> whole bitmap was passed in thus making memory requirements huge
>> of images * width of whole bitmap = required bitmap size).
>> Furthermore, cx parameter is redundant because all checks are already
>> there (that the image list can't be reduced), and besides of that
>> is no use for it anymore. Thus it's been removed.
> That bug was introduced while attempting to change the size of the
> for the toolbar. Looking at the code it's rely iffy if image list
> should be able to do that at all. Or that toolbar should handle the
> itself (most likely).
> The commit I'm talking about is:
> commit 19cef6ca1059140d00ac8b445ab3f9eb0491f239
> Author: Gerard Patel <g.patel at wanadoo.fr>
> Date: Sat Jul 8 12:48:37 2000 +0000
> Allow the size of bitmaps to be changed after toolbar buttons have
> been added.
> With your patch you "disable" this ability (which I don't think is
> anyway). So some tests are in order. At least a test program
> what's the correct behavior.
Yes exactly, however I didn't provide any testcase, because I just
removed non-used parameter and fixed existing code. If someone wants
to implement image list having variable width of each image - he's
free to proof that Windows does this (which I very much doubt).
Anyway, e.g. Sib Icon Edit required ~ 30 Mb (something like 27 images
* 13440 width * 24 height * sizeof(each pixel)) of memory for every
instance to run (due to this bug). Now it requires only about 300kb :-).
More information about the wine-devel