Subject: 23.2; Pixmaps kept in X11 after (svg?) images no longer are used

From: Anders Waldenborg <[email-masked]>
Date: Thu, 20 May 2010 17:40:30 +0200

By running the command defined by the following:

(require 'cl)
(defun aw-replace-buffer-contents-with-svg-images ()
   (interactive)
   (erase-buffer)
   (dotimes (N 200)
     (insert-image (create-image (format "<svg width=\"50\" 
height=\"50\"><rect x=\"0\" y=\"0\" width=\"100\" height=\"100\" 
fill=\"#%02x%02x%02x\"/></svg>" (random 255)(random 255)(random 255)) 
'svg t))))

the current buffer will be replaced with 200 images. Running xrestop it
can easily be seen that 200 pixmaps are added to the X11 server every
time the command is run.

One would expect that the pixmaps were removed from X11 when they don't
exist in any buffer any longer (which is why recipe uses erase-buffer so
it can be run multiple times, increasing number of pixmaps every time -
not the behaviour I expect).

The pixmaps doesn't even go away when the buffer is killed.

Don't know if this applies to all image types or only svg.

In GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)
  of 2010-05-16 on raven, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.10707000
configured using `configure  '--build' 'i486-linux-gnu' '--build' 
'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' 
'--libexecdir=/usr/lib' '--localstatedir=/var/lib' 
'--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' 
'--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' 
'--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 
'build_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 
'CPPFLAGS=''

Important settings:
   value of $LC_ALL: nil
   value of $LC_COLLATE: nil
   value of $LC_CTYPE: nil
   value of $LC_MESSAGES: nil
   value of $LC_MONETARY: nil
   value of $LC_NUMERIC: nil
   value of $LC_TIME: nil
   value of $LANG: en_US.UTF-8
   value of $XMODIFIERS: nil
   locale-coding-system: utf-8-unix
   default enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
   tooltip-mode: t
   mouse-wheel-mode: t
   tool-bar-mode: t
   menu-bar-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   blink-cursor-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t
   line-number-mode: t
   transient-mark-mode: t

Recent input:
<down-mouse-2> <mouse-2> <up> <up> <up> <up> <up> <up>
<up> <left> <left> <left> C-M-x <down> <down> C-M-x
M-x r e p o <tab> r <tab> <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Mark set
cl
aw-replace-buffer-contents-with-svg-images
Making completion list...

Load-path shadows:
/usr/share/emacs/23.2/site-lisp/debian-startup hides 
/usr/share/emacs/site-lisp/debian-startup
/usr/share/emacs/23.2/site-lisp/semi/pgg-pgp5 hides 
/usr/share/emacs/23.2/lisp/pgg-pgp5
/usr/share/emacs/23.2/site-lisp/semi/pgg-gpg hides 
/usr/share/emacs/23.2/lisp/pgg-gpg
/usr/share/emacs/23.2/site-lisp/semi/pgg-parse hides 
/usr/share/emacs/23.2/lisp/pgg-parse
/usr/share/emacs/23.2/site-lisp/flim/sha1 hides 
/usr/share/emacs/23.2/lisp/sha1
/usr/share/emacs/23.2/site-lisp/flim/md4 hides 
/usr/share/emacs/23.2/lisp/md4
/usr/share/emacs/23.2/site-lisp/flim/hex-util hides 
/usr/share/emacs/23.2/lisp/hex-util
/usr/share/emacs/23.2/site-lisp/semi/pgg-def hides 
/usr/share/emacs/23.2/lisp/pgg-def
/usr/share/emacs/23.2/site-lisp/semi/pgg-pgp hides 
/usr/share/emacs/23.2/lisp/pgg-pgp
/usr/share/emacs/23.2/site-lisp/semi/pgg hides 
/usr/share/emacs/23.2/lisp/pgg
/usr/share/emacs/site-lisp/rst hides 
/usr/share/emacs/23.2/lisp/textmodes/rst
/usr/share/emacs/23.2/site-lisp/dictionaries-common/flyspell hides 
/usr/share/emacs/23.2/lisp/textmodes/flyspell
/usr/share/emacs/23.2/site-lisp/dictionaries-common/ispell hides 
/usr/share/emacs/23.2/lisp/textmodes/ispell
/usr/share/emacs/23.2/site-lisp/flim/sasl hides 
/usr/share/emacs/23.2/lisp/net/sasl
/usr/share/emacs/23.2/site-lisp/flim/hmac-md5 hides 
/usr/share/emacs/23.2/lisp/net/hmac-md5
/usr/share/emacs/23.2/site-lisp/flim/sasl-cram hides 
/usr/share/emacs/23.2/lisp/net/sasl-cram
/usr/share/emacs/23.2/site-lisp/flim/hmac-def hides 
/usr/share/emacs/23.2/lisp/net/hmac-def
/usr/share/emacs/23.2/site-lisp/flim/sasl-ntlm hides 
/usr/share/emacs/23.2/lisp/net/sasl-ntlm
/usr/share/emacs/23.2/site-lisp/flim/sasl-digest hides 
/usr/share/emacs/23.2/lisp/net/sasl-digest
/usr/share/emacs/23.2/site-lisp/flim/ntlm hides 
/usr/share/emacs/23.2/lisp/net/ntlm
/usr/share/emacs/23.2/site-lisp/wl/rfc2368 hides 
/usr/share/emacs/23.2/lisp/mail/rfc2368

Features:
(shadow sort mail-extr message sendmail regexp-opt ecomplete rfc822 mml
mml-sec password-cache mm-decode mm-bodies mm-encode mailcap mail-parse
rfc2231 rfc2047 rfc2045 qp ietf-drums mailabbrev nnheader gnus-util
netrc time-date mm-util mail-prsvr gmm-utils wid-edit mailheader canlock
sha1 sha1-el hex-util hashcash mail-utils emacsbug help-mode easymenu
view cl cl-19 tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win
x-dnd font-setting tool-bar dnd fontset image fringe lisp-mode register
page menu-bar rfn-eshadow timer select scroll-bar mldrag mouse jit-lock
font-lock syntax facemenu font-core frame cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew
greek romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button
minibuffer faces cus-face files text-properties overlay md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind system-font-setting
font-render-setting gtk x-toolkit x multi-tty emacs)