After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 547669 - Area-prepared signal in svg_loader
Area-prepared signal in svg_loader
Status: RESOLVED WONTFIX
Product: librsvg
Classification: Core
Component: general
2.22.x
Other All
: Normal normal
: ---
Assigned To: librsvg maintainers
librsvg maintainers
Depends on:
Blocks:
 
 
Reported: 2008-08-13 20:26 UTC by Vladimir Nadvornik
Modified: 2008-08-14 12:26 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Vladimir Nadvornik 2008-08-13 20:26:55 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:
Comment 1 Dominic Lachowicz 2008-08-14 03:34:03 UTC
Not sure what can be done, really. librsvg doesn't do progressive rendering.
Comment 2 Vladimir Nadvornik 2008-08-14 06:59:19 UTC
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.
Comment 3 Dominic Lachowicz 2008-08-14 12:26:15 UTC
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).