Re: GdkPixbufLoader size-prepared troubles
- From: Jim Hayward <jimhayward linuxexperience net>
- To: Alesh Slovak <alesh slovak avasys jp>
- Cc: gtk-list gnome org
- Subject: Re: GdkPixbufLoader size-prepared troubles
- Date: Wed, 11 Aug 2010 22:27:38 -0700
On Wed, 2010-08-11 at 16:13 +0900, Alesh Slovak wrote:
> >> But when I do this, the image data never makes it into the pixbuf, although the
> >> pixbuf itself appears to get sized correctly.
> >
> > Are you trying to get the pixbuf from the loader too soon?
>
> This appears to be the case. I was getting the pixbuf from the loader in the
> handler for the area-prepared signal, which worked just fine as long as I didn't
> call gdk_pixbuf_loader_set_size() in the size-prepared handler.
Quoting from the docs, "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".
>From that I would expect that no image data is written until
area-updated is called. I wouldn't expect a call to
gdk_pixbuf_loader_get_pixbuf() to produce a displayable image in
area-prepared.
> Getting the pixbuf in the area-updated handler fixes this particular problem. So
> now I can get a scaled image out of the pixbuf loader. I am still receiving
> multiple size-prepared signals, but it doesn't seem to be having any ill effects
> as far as I can tell.
I still find it strange that you are seeing multiple size-prepared
signals. I've only ever seen it emitted once and from the docs I would
only expect to see it once.
Are you making multiple calls to gdk_pixbuf_loader_write()? I've never
tried it. but according to the docs...
"This will cause a pixbuf loader to parse the next count bytes of an
image."
>From that, I wonder if it would be possible to progressively show an
image by making multiple calls to gdk_pixbuf_loader_write() and instead
of passing the full size of image, just pass a specific number of bytes
to parse until the image is fully loaded. Doing this would still allow
using gdk_pixbuf_loader_set_size() to scale the image while it is
loaded.
>
> I happened to notice one peculiar thing though, when I call
> gdk_pixbuf_loader_set_size(), the area-updated signal is only ever called once,
> after the image has finished loading. Thus, I can't update the display to show
> the image loading progressively. I guess loading/displaying image data
> progressively and scaling at the same time are not supported by GdkPixbufLoader?
I've never tried to progressively load the image. Your seeing only one
area-updated signal does make it sound like progressively loading and
scaling the image with gdk_pixbuf_loader_set_size() is not supported.
Regards,
Jim H
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]