[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Slow image display over network

From: YAMAMOTO Mitsuharu
Subject: Re: Slow image display over network
Date: Sat, 25 Sep 2010 12:35:04 +0900
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)

>>>>> On Fri, 24 Sep 2010 13:23:02 +0200, Lars Magne Ingebrigtsen 
>>>>> <address@hidden> said:

> Daniel Pittman <address@hidden> writes:
>> Aw, heck.  I saved you the time: PNG loading does create the X
>> image and pixmap during the load process, confirming my guesswork.
>> I didn't check the other image loaders, but they would sensibly
>> behave the same way, showing the same result.

> Right.  Image load pushes the image over X, even though we're not
> actually going to display it?

> That means that the way Gnus displays images is as pessimal as
> possible.  When reading a HTML message with images, Gnus calls
> (image-size (create-image ...)) to find out the size, and then if
> it's too big, it rescales the image down.  And this means that the
> huge image has to be transferred first over the slow X connection,
> and then rescaled, and then probably transferred again?

> Is this really necessary?  :-) Why can't image transfer to the X
> server wait until the `put-image' call?

Of course, creation of Pixmap from XImage can be deferred until the
actual display happens.  Actually, the Carbon port and its descendants
do that.  In those ports, CGImage (which conceptually corresponds to
Pixmap in X11) is created from struct _XImage (which corresponds to
XImage in X11) at prepare_image_for_display, not at lookup_image.  The
`pixmap' and `mask' members in struct image actually point to struct
_XImage data rather than CGImage there.

                                     YAMAMOTO Mitsuharu

reply via email to

[Prev in Thread] Current Thread [Next in Thread]