Be more specific with XRender bit-depths (bug#34051)
* src/image.c (x_create_x_image_and_pixmap): Fail gracefully if a bit depth is requested that XRender doesn't support.
This commit is contained in:
parent
5a6df06494
commit
03b8903ee7
1 changed files with 22 additions and 8 deletions
30
src/image.c
30
src/image.c
|
@ -2179,15 +2179,29 @@ x_create_x_image_and_pixmap (struct frame *f, int width, int height, int depth,
|
|||
int event_basep, error_basep;
|
||||
if (picture && XRenderQueryExtension (display, &event_basep, &error_basep))
|
||||
{
|
||||
XRenderPictFormat *format;
|
||||
XRenderPictureAttributes attr;
|
||||
if (depth == 32 || depth == 24 || depth == 8)
|
||||
{
|
||||
XRenderPictFormat *format;
|
||||
XRenderPictureAttributes attr;
|
||||
|
||||
/* FIXME: Do we need to handle all possible bit depths? */
|
||||
format = XRenderFindStandardFormat (display,
|
||||
depth > 24 ? PictStandardARGB32
|
||||
: depth > 8 ? PictStandardRGB24
|
||||
: PictStandardA8);
|
||||
*picture = XRenderCreatePicture (display, *pixmap, format, 0, &attr);
|
||||
/* FIXME: Do we need to handle all possible bit depths?
|
||||
XRenderFindStandardFormat supports PictStandardARGB32,
|
||||
PictStandardRGB24, PictStandardA8, PictStandardA4,
|
||||
PictStandardA1, and PictStandardNUM (what is this?!).
|
||||
|
||||
XRenderFindFormat may support more, but I don't
|
||||
understand the documentation. */
|
||||
format = XRenderFindStandardFormat (display,
|
||||
depth == 32 ? PictStandardARGB32
|
||||
: depth == 24 ? PictStandardRGB24
|
||||
: PictStandardA8);
|
||||
*picture = XRenderCreatePicture (display, *pixmap, format, 0, &attr);
|
||||
}
|
||||
else
|
||||
{
|
||||
image_error ("Specified image bit depth is not supported by XRender");
|
||||
*picture = NULL;
|
||||
}
|
||||
}
|
||||
# endif
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue