diff options
author | Trond Kjernåsen <trond.kjernasen@nokia.com> | 2010-09-22 16:11:02 +0200 |
---|---|---|
committer | Trond Kjernåsen <trond.kjernasen@nokia.com> | 2010-09-22 16:16:27 +0200 |
commit | 88b5af89e35584f12330bc6932176d5df413d1b1 (patch) | |
tree | 91c57b512a0f364560060613a7e7bd28ec20dc38 /src/gui/image/qpixmap_x11.cpp | |
parent | 571f0dc0a33b22bfc1f1ffd4521e7c4e5151647c (diff) |
Fixed drawing of QPixmaps with masks in the GL 2 and X11 engines.
A regression from 4.6.x. This is an X11-only problem caused by the
separate masks that an X11 QPixmap can contain. These masks we're not
taken into account when a number optimizations were done for 4.7.
Introduction of the texture-from-pixmap extension in 4.6 also broke
masked pixmaps under X11.
Task-number: QTBUG-13814
Reviewed-by: Samuel
Diffstat (limited to 'src/gui/image/qpixmap_x11.cpp')
-rw-r--r-- | src/gui/image/qpixmap_x11.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp index 3d9c363f71..32676ba6f0 100644 --- a/src/gui/image/qpixmap_x11.cpp +++ b/src/gui/image/qpixmap_x11.cpp @@ -1321,6 +1321,15 @@ QBitmap QX11PixmapData::mask() const return mask; } +bool QX11PixmapData::hasMask() const +{ + return +#ifndef QT_NO_XRENDER + (picture && d == 32) || +#endif + (d == 1) || x11_mask; +} + /*! Sets a mask bitmap. @@ -1549,7 +1558,7 @@ QImage QX11PixmapData::toImage(const QRect &rect) const if (!xiWrapper.xi) return QImage(); - if (canTakeQImageFromXImage(xiWrapper)) + if (!x11_mask && canTakeQImageFromXImage(xiWrapper)) return takeQImageFromXImage(xiWrapper); QImage image = toImage(xiWrapper, rect); |