summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2014-08-19 15:57:22 -0500
committerJulien Cristau <jcristau@debian.org>2014-10-10 18:08:32 +0200
commitf7ca20cacfd4e0304d01f29491ae8363fd482279 (patch)
tree73944c5c492260d7b924fee75275944362d4580f
parent0e0951ce3eb33242934df9b683f8f5ca4fd501af (diff)
fb: Fix invalid bpp for 24bit depth window
We have a hack in fb layer for a 24bpp screen to use 32bpp images, and fbCreateWindow() replaces its drawable.bitsPerPixel field appropriately. But, the problem is that it always replaces when 32bpp is passed. If the depth is 32, this results in bpp < depth, which is actually invalid. Meanwhile, fbCreatePixmap() has a more check and it creates with 24bpp only when the passed depth <= 24 for avoiding such a problem. This oneliner patch just adds the similar check in fbCreateWindow(). This (hopefully) fixes the long-standing broken graphics mess of cirrus KMS with 24bpp. Signed-off-by: Takashi Iwai <tiwai@suse.de> Reviewed-by: Keith Packard <keithp@keithp.com> (cherry picked from commit fe5018e0564118a7a8198fa286186fdb9ed818c7) Signed-off-by: Julien Cristau <jcristau@debian.org>
-rw-r--r--fb/fbwindow.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fb/fbwindow.c b/fb/fbwindow.c
index 368c4b883..c90175faa 100644
--- a/fb/fbwindow.c
+++ b/fb/fbwindow.c
@@ -33,7 +33,7 @@ fbCreateWindow(WindowPtr pWin)
{
dixSetPrivate(&pWin->devPrivates, fbGetWinPrivateKey(pWin),
fbGetScreenPixmap(pWin->drawable.pScreen));
- if (pWin->drawable.bitsPerPixel == 32)
+ if (pWin->drawable.bitsPerPixel == 32 && pWin->drawable.depth <= 24)
pWin->drawable.bitsPerPixel =
fbGetScreenPrivate(pWin->drawable.pScreen)->win32bpp;
return TRUE;