Pixmap pixmap, clipmask = None;
int depth = FRAME_DISPLAY_INFO (f)->n_planes;
XGCValues gcv;
+ unsigned long background = face->background;
#ifdef HAVE_XRENDER
Picture picture = None;
XRenderPictureAttributes attrs;
else
bits = (char *) p->bits + p->dh;
+ if (FRAME_DISPLAY_INFO (f)->alpha_bits)
+ {
+ background = (background & ~FRAME_DISPLAY_INFO (f)->alpha_mask);
+ background |= (((unsigned long) (f->alpha_background * 0xffff)
+ >> (16 - FRAME_DISPLAY_INFO (f)->alpha_bits))
+ << FRAME_DISPLAY_INFO (f)->alpha_offset);
+ }
+
/* Draw the bitmap. I believe these small pixmaps can be cached
by the server. */
pixmap = XCreatePixmapFromBitmapData (display, drawable, bits, p->wd, p->h,
? (p->overlay_p ? face->background
: f->output_data.x->cursor_pixel)
: face->foreground),
- face->background, depth);
+ background, depth);
#ifdef HAVE_XRENDER
if (FRAME_X_PICTURE_FORMAT (f)
if (channel_mask)
get_bits_and_offset (channel_mask, &dpyinfo->alpha_bits,
&dpyinfo->alpha_offset);
+ dpyinfo->alpha_mask = channel_mask;
}
else
#endif
if (alpha_mask)
get_bits_and_offset (alpha_mask, &dpyinfo->alpha_bits,
&dpyinfo->alpha_offset);
+ dpyinfo->alpha_mask = alpha_mask;
}
}
}
/* Bits and shifts to use to compose pixel values on TrueColor visuals. */
int red_bits, blue_bits, green_bits, alpha_bits;
int red_offset, blue_offset, green_offset, alpha_offset;
+ unsigned long alpha_mask;
/* The type of window manager we have. If we move FRAME_OUTER_WINDOW
to x/y 0/0, some window managers (type A) puts the window manager