Bug#728813: eterm: Esetroot on PseudoColor visual
Package: eterm
Version: 0.9.6-1
Severity: normal
Tags: patch
File: /usr/bin/Esetroot
If the default visual on a screen is PseudoColor then Esetroot gets an
error. This can be seen with the Xvfb test server,
xvfb-run -a -s '-cc 33' Esetroot /usr/share/Eterm/pix/tile/circuit.jpg
=>
X Error of failed request: BadColor (invalid Colormap parameter)
Major opcode of failed request: 84 (X_AllocColor)
Resource id in failed request: 0x0
Serial number of failed request: 10
Current serial number in output stream: 10
gdb "break exit" shows
#0 __GI_exit (status=status@entry=1) at exit.c:98
#1 0xb7e5be6e in _XDefaultError (dpy=0x804d008, event=0xbfffeecc) at ../../src/XlibInt.c:1414
#2 0xb7e5bfa6 in _XError (dpy=dpy@entry=0x804d008, rep=rep@entry=0x805c6b8) at ../../src/XlibInt.c:1463
#3 0xb7e58ca6 in handle_error (dpy=dpy@entry=0x804d008, err=0x805c6b8, in_XReply=in_XReply@entry=1)
at ../../src/xcb_io.c:213
#4 0xb7e59ea3 in _XReply (dpy=dpy@entry=0x804d008, rep=rep@entry=0xbffff000, extra=extra@entry=0,
discard=discard@entry=1) at ../../src/xcb_io.c:699
#5 0xb7e3e490 in XAllocColor (dpy=0x804d008, cmap=0, def=0xbffff084) at ../../src/GetHColor.c:48
#6 0xb7f6e27a in ?? () from /usr/lib/i386-linux-gnu/libImlib2.so.1
#7 0xb7f6f310 in ?? () from /usr/lib/i386-linux-gnu/libImlib2.so.1
#8 0xb7f70bdb in ?? () from /usr/lib/i386-linux-gnu/libImlib2.so.1
#9 0xb7f70c88 in ?? () from /usr/lib/i386-linux-gnu/libImlib2.so.1
#10 0xb7f85ec2 in ?? () from /usr/lib/i386-linux-gnu/libImlib2.so.1
#11 0xb7f70f61 in ?? () from /usr/lib/i386-linux-gnu/libImlib2.so.1
#12 0xb7f6022b in imlib_render_pixmaps_for_whole_image_at_size () from /usr/lib/i386-linux-gnu/libImlib2.so.1
#13 0x08049648 in ?? ()
#14 0xb7c8a8c5 in __libc_start_main (main=0x8048ef0, argc=2, ubp_av=0xbffff924, init=0x8049fe0, fini=0x8049fd0,
rtld_fini=0xb7fee0c0 <_dl_fini>, stack_end=0xbffff91c) at libc-start.c:260
#15 0x08049b11 in ?? ()
I think cmap=0 means imlib_context_set_colormap() has not been called.
You'd probably like imlib to give some better message there than to call
XAllocColor() with cmap=0, but in any case I expect Esetroot should pass
the root colormap. I get some joy from the line below.
--- Esetroot.c.orig 2011-03-16 16:16:59.000000000 +1100
+++ Esetroot.c 2013-11-06 06:05:10.000000000 +1100
@@ -180,6 +180,7 @@
}
imlib_context_set_display(Xdisplay);
imlib_context_set_visual(DefaultVisual(Xdisplay, DefaultScreen(Xdisplay)));
+ imlib_context_set_colormap(DefaultColormap(Xdisplay, DefaultScreen(Xdisplay)));
im = imlib_load_image_immediately(fname);
if (!im) {
fprintf(stderr, "%s: Unable to load image file \"%s\".\n", *argv, fname);
-- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (990, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.32-5-686 (SMP w/1 CPU core)
Locale: LANG=en_AU.utf8, LC_CTYPE=en_AU.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages eterm depends on:
ii libast2 0.7-6+b1
ii libc6 2.17-93
ii libfreetype6 2.4.9-1.1
ii libice6 2:1.0.8-2
ii libimlib2 1.4.5-3
ii libsm6 2:1.2.1-2
ii libx11-6 2:1.6.2-1
ii libxext6 2:1.3.2-1
ii multiarch-support 2.17-93
ii zlib1g 1:1.2.8.dfsg-1
eterm recommends no packages.
eterm suggests no packages.
-- no debconf information
Reply to: