GNOME Bugzilla – Bug 547669
Area-prepared signal in svg_loader
Last modified: 2008-08-14 12:26:15 UTC
Please describe the problem: gdk-pixbuf-loader module from librsvg emits the "area-prepared" signal too late. According to gdk-pixbuf documentation, an application can use this signal to fill the pixbuf with a background image that is shown during loading. SVG loader however emits the signal too late, when the image is already loaded and the application then erases it. Steps to reproduce: 1. try to display any SVG file with geeqie-1.0alpha2 from geeqie.sf.net 2. 3. Actual results: Expected results: Does this happen every time? Other information:
Not sure what can be done, really. librsvg doesn't do progressive rendering.
gdk-pixbuf documentation says this: === The second signal, "area_prepared", will be called as soon as the pixbuf of the desired has been allocated. You can obtain it by calling gdk_pixbuf_loader_get_pixbuf(). If you want to use it, simply ref it. In addition, no actual information will be passed in yet, so the pixbuf can be safely filled with any temporary graphics (or an initial color) as needed. You can also call gdk_pixbuf_loader_get_pixbuf() later and get the same pixbuf. === An application that attempts to use this feature will not work with svg. That is clearly a bug. The "area_prepared" must be emitted after the pixbuf is allocated but before the image data are written to it. See for example tiff loader. It does not support progressive rendering too, but handles this signal correctly.
Yes, but the TIFF loader knows how large the image is before the image has finished loading, which is a pre-requisite for allocating the pixbuf. librsvg does not (and in many cases, can not).