summaryrefslogtreecommitdiffstats
path: root/src/gui/effects/qgraphicseffect.cpp
diff options
context:
space:
mode:
authorBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-08-28 15:39:27 (GMT)
committerBjørn Erik Nilsen <bjorn.nilsen@nokia.com>2009-08-28 15:45:26 (GMT)
commit15144fab1010194b078c34157e8d208cfb625e88 (patch)
treea4989e8be3685fa6c81239a7482891742e8631d3 /src/gui/effects/qgraphicseffect.cpp
parent78fdde630cb16086ef24d8e79adcf0f91a729ddb (diff)
downloadQt-15144fab1010194b078c34157e8d208cfb625e88.zip
Qt-15144fab1010194b078c34157e8d208cfb625e88.tar.gz
Qt-15144fab1010194b078c34157e8d208cfb625e88.tar.bz2
Don't call qFuzzyIsNull on every single frame in QGraphicsOpacityEffect.
We only have to do it when the opacity changes (in ::setOpacity). Also, we cannot do the cut-off when the effect has an opacity mask set.
Diffstat (limited to 'src/gui/effects/qgraphicseffect.cpp')
-rw-r--r--src/gui/effects/qgraphicseffect.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/gui/effects/qgraphicseffect.cpp b/src/gui/effects/qgraphicseffect.cpp
index 62ad44d..50644ff 100644
--- a/src/gui/effects/qgraphicseffect.cpp
+++ b/src/gui/effects/qgraphicseffect.cpp
@@ -1008,6 +1008,10 @@ void QGraphicsOpacityEffect::setOpacity(qreal opacity)
return;
d->opacity = opacity;
+ if ((d->isFullyTransparent = qFuzzyIsNull(d->opacity)))
+ d->isFullyOpaque = 0;
+ else
+ d->isFullyOpaque = qFuzzyIsNull(d->opacity - 1);
emit opacityChanged(opacity);
}
@@ -1065,11 +1069,11 @@ void QGraphicsOpacityEffect::draw(QPainter *painter, QGraphicsEffectSource *sour
Q_D(QGraphicsOpacityEffect);
// Transparent; nothing to draw.
- if (qFuzzyIsNull(d->opacity))
+ if (d->isFullyTransparent)
return;
// Opaque; draw directly without going through a pixmap.
- if (qFuzzyIsNull(d->opacity - 1)) {
+ if (d->isFullyOpaque && !d->hasOpacityMask) {
source->draw(painter);
return;
}