Comment 46 for bug 1437260

Revision history for this message
In , Thomas-luebking (thomas-luebking) wrote :

Resp. this one (the ARGB32 translucency handling is uncritical, it's applied to the preconverted image. This should be the single point of failure)

diff --git a/kcms/kfontinst/lib/FcEngine.cpp b/kcms/kfontinst/lib/FcEngine.cpp
index 19b7206..012a9d5 100644
--- a/kcms/kfontinst/lib/FcEngine.cpp
+++ b/kcms/kfontinst/lib/FcEngine.cpp
@@ -537,7 +537,14 @@ QImage CFcEngine::Xft::toImage(int w, int h) const
     if (!xImage) {
         return QImage();
     }
- return QImage(xImage->data, xImage->width, xImage->height, xImage->stride, QImage::Format_ARGB32_Premultiplied, &cleanupXImage, xImage);
+ QImage::Format format = QImage::Format_RGB32;
+ switch (DefaultDepth(QX11Info::display(), 0)) {
+ case 32: format = QImage::Format_ARGB32_Premultiplied; break;
+ case 16: format = QImage::Format_RGB16; break;
+ case 8: format = QImage::Format_Grayscale8; break;
+ default: break;
+ }
+ return QImage(xImage->data, xImage->width, xImage->height, xImage->stride, format, &cleanupXImage, xImage);
 }

 inline int point2Pixel(int point)