aboutsummaryrefslogtreecommitdiffstats
path: root/w3mimg/x11/x11_w3mimg.c
diff options
context:
space:
mode:
authorBwackNinja <BwackNinja@gmail.com>2015-10-23 22:32:19 +0000
committerTatsuya Kinoshita <tats@debian.org>2015-10-23 22:32:19 +0000
commite24b4064daf3e022e370788a8c7267db40c37dda (patch)
treeec332ae47141506e7f905eb1e7f5c09bd73f9f57 /w3mimg/x11/x11_w3mimg.c
parentUpdate ChangeLog (diff)
downloadw3m-e24b4064daf3e022e370788a8c7267db40c37dda.tar.gz
w3m-e24b4064daf3e022e370788a8c7267db40c37dda.zip
Fix handling visuals and colormaps incorrectly
cf. https://github.com/hut/ranger/issues/86 Origin: https://gist.github.com/BwackNinja/60a344730170f9ce2163 Bug-Arch: https://bugs.archlinux.org/task/46836 Bug: https://sourceforge.net/p/w3m/patches/72/
Diffstat (limited to 'w3mimg/x11/x11_w3mimg.c')
-rw-r--r--w3mimg/x11/x11_w3mimg.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/w3mimg/x11/x11_w3mimg.c b/w3mimg/x11/x11_w3mimg.c
index bc8d0aa..7eafa76 100644
--- a/w3mimg/x11/x11_w3mimg.c
+++ b/w3mimg/x11/x11_w3mimg.c
@@ -219,9 +219,12 @@ x11_set_background(w3mimg_op * self, char *background)
Pixmap p;
GC gc;
XImage *i;
+ XWindowAttributes attr;
+
+ XGetWindowAttributes(xi->display, xi->window, &attr);
p = XCreatePixmap(xi->display, xi->window, 1, 1,
- DefaultDepth(xi->display, 0));
+ attr.depth);
gc = XCreateGC(xi->display, xi->window, 0, NULL);
if (!p || !gc)
exit(1); /* XXX */
@@ -333,6 +336,7 @@ x11_load_image(w3mimg_op * self, W3MImage * img, char *fname, int w, int h)
ImlibImage *im;
#elif defined(USE_IMLIB2)
Imlib_Image im;
+ XWindowAttributes attr;
#elif defined(USE_GDKPIXBUF)
GdkPixbufAnimation *animation;
int j, iw, ih, n, frame_num, delay = -1, max_anim;
@@ -379,15 +383,16 @@ x11_load_image(w3mimg_op * self, W3MImage * img, char *fname, int w, int h)
w = imlib_image_get_width();
if (h <= 0)
h = imlib_image_get_height();
+ XGetWindowAttributes(xi->display, xi->window, &attr);
img->pixmap = (void *)XCreatePixmap(xi->display, xi->parent, w, h,
- DefaultDepth(xi->display, 0));
+ attr.depth);
if (!img->pixmap)
return 0;
XSetForeground(xi->display, xi->imageGC, xi->background_pixel);
XFillRectangle(xi->display, (Pixmap) img->pixmap, xi->imageGC, 0, 0, w, h);
imlib_context_set_display(xi->display);
- imlib_context_set_visual(DefaultVisual(xi->display, 0));
- imlib_context_set_colormap(DefaultColormap(xi->display, 0));
+ imlib_context_set_visual(attr.visual);
+ imlib_context_set_colormap(attr.colormap);
imlib_context_set_drawable((Drawable) img->pixmap);
imlib_render_image_on_drawable_at_size(0, 0, w, h);
imlib_free_image();