Mattias Gaertner wrote: > On Fri, 20 Jun 2008 21:24:13 -0300 > Luiz Americo Pereira Camara <[EMAIL PROTECTED]> wrote: > >> Marc Weustink wrote: >>> Luiz Americo Pereira Camara wrote: >>> >>>> One old issue i have with TBitmap (not introduced now but that >>>> could be resolved with this refactoring) is that when a image is >>>> loaded with LoadFromStream or LoadFromFile a copy of the image >>>> buffer is kept in memory. This can speedup if is necessary to >>>> access the image data directly but for the more common case of >>>> loading a file to display is waste of memory. >>>> >>> This is no error, this is by design. And is only kept once and as >>> long as the image isn't changed. Indeed, for cases where you know >>> you never want to save it, we can add an property. >>> >> Since the most common case is not save it, just display, the default >> should be not keep a copy of the stream. This my point. > > 1. Many images are only loaded, but never displayed.
ow ? which ones ? > 2. SaveStream often contains information, that is not stored in the > corresponding TGraphic class. For example header information or higher > resolution. Not anymore. Most important info is stored in a rawimage description and/or the object itself. The stream is only kept to save an image in its original format. > 3. The SaveStream is kept to make sure, that loading/saving creates the > same stream. For example the IDE uses this a lot (TGraphics.Equals). imo, except for jpeg maybe, load and save image code should reproduce the same image. TGraphic.Equals might get adapted to use better comarisation based on imagedata. > Therefore: > Iff the SaveStream is freed by default, *all* images of the LCL must be > checked and the biggest part must be enabled to keep SaveStream at > least at designtime. I see no reason to check all images. Marc _______________________________________________ Lazarus mailing list [email protected] http://www.lazarus.freepascal.org/mailman/listinfo/lazarus
