summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJani Hautakangas <ext-jani.hautakangas@nokia.com>2010-08-06 10:18:24 (GMT)
committerJani Hautakangas <ext-jani.hautakangas@nokia.com>2010-08-06 10:43:05 (GMT)
commit0210bbbd7bf8254be5f7f19f524068cd39fc34c2 (patch)
tree1f1389af46ace62b9632ee4814c01e602cdeeb09
parent339270016bd8805b081f0b4ff550906a6bcfec5b (diff)
downloadQt-0210bbbd7bf8254be5f7f19f524068cd39fc34c2.zip
Qt-0210bbbd7bf8254be5f7f19f524068cd39fc34c2.tar.gz
Qt-0210bbbd7bf8254be5f7f19f524068cd39fc34c2.tar.bz2
Use ARGB32 premultiplied backing store format in Symbian^3
raster paint engine for translucent windows. Task-number: QTBUG-12710 Reviewed-by: Jason Barron
-rw-r--r--src/gui/kernel/qapplication_s60.cpp3
-rw-r--r--src/gui/painting/qwindowsurface_s60.cpp12
2 files changed, 10 insertions, 5 deletions
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 52f0db6..a14b1a7 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -1087,7 +1087,8 @@ void QSymbianControl::Draw(const TRect& controlRect) const
break;
case QWExtra::ZeroFill:
- if (Window().DisplayMode() == EColor16MA) {
+ if (Window().DisplayMode() == EColor16MA
+ || Window().DisplayMode() == Q_SYMBIAN_ECOLOR16MAP) {
gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
gc.SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha);
gc.SetBrushColor(TRgb::Color16MA(0));
diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp
index 477bd93..8bac1f5 100644
--- a/src/gui/painting/qwindowsurface_s60.cpp
+++ b/src/gui/painting/qwindowsurface_s60.cpp
@@ -67,10 +67,14 @@ QS60WindowSurface::QS60WindowSurface(QWidget* widget)
TDisplayMode mode = S60->screenDevice()->DisplayMode();
bool isOpaque = qt_widget_private(widget)->isOpaque;
- if (mode == EColor16MA && isOpaque)
- mode = EColor16MU; // Faster since 16MU -> 16MA is typically accelerated
- else if (mode == EColor16MU && !isOpaque)
- mode = EColor16MA; // Try for transparency anyway
+ if (isOpaque) {
+ mode = EColor16MU;
+ } else {
+ if (QSysInfo::symbianVersion() >= QSysInfo::SV_SF_3)
+ mode = Q_SYMBIAN_ECOLOR16MAP; // Symbian^3 WServ has support for ARGB32_PRE
+ else
+ mode = EColor16MA; // Symbian prior to Symbian^3 sw accelerates EColor16MA
+ }
// We create empty CFbsBitmap here -> it will be resized in setGeometry
CFbsBitmap *bitmap = q_check_ptr(new CFbsBitmap); // CBase derived object needs check on new