From 0c0eac000ecbe8c0bdcb8c6d914854b1a09a720b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Wed, 23 Jun 2010 13:33:20 +0200 Subject: Fixed QPixmap::toImage() bug introduced in fb76a872e20bd. The alpha channel we get from XGetImage might not be saturated for opaque pixmaps. Reviewed-by: Trond --- src/gui/image/qpixmap_x11.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/gui/image/qpixmap_x11.cpp') diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp index 604dbf50a5..3d9c363f71 100644 --- a/src/gui/image/qpixmap_x11.cpp +++ b/src/gui/image/qpixmap_x11.cpp @@ -1525,6 +1525,16 @@ QImage QX11PixmapData::takeQImageFromXImage(const QXImageWrapper &xiWrapper) con } } + // fix-up alpha channel + if (format == QImage::Format_RGB32) { + QRgb *p = (QRgb *)image.bits(); + for (int y = 0; y < xi->height; ++y) { + for (int x = 0; x < xi->width; ++x) + p[x] |= 0xff000000; + p += xi->bytes_per_line / 4; + } + } + XDestroyImage(xi); return image; } -- cgit v1.2.3