summaryrefslogtreecommitdiffstats
path: root/src/plugins/gfxdrivers
diff options
context:
space:
mode:
authorAnders Bakken <anders.bakken@nokia.com>2009-04-23 16:24:54 -0700
committerAnders Bakken <anders.bakken@nokia.com>2009-04-23 16:43:54 -0700
commit3252c7373abb605db80042c5c16b535de0b91401 (patch)
tree722ef08b19ce2d5286608ccd777080b4637aae5c /src/plugins/gfxdrivers
parentcbd096e24386a208fcd3f358d59addaace49cdce (diff)
Remove the simpleBrush concept
Since we have to update the brush for each paint command anyway keeping the state of the brush and caching the value of simpleBrush makes no sense. Also, most times when filling with a brush QPaintEngineEx::fillRect(const QRect &, const QBrush &) is called in which we never got a brushChanged() anyway. Reviewed-by: Donald <qt-info@nokia.com>
Diffstat (limited to 'src/plugins/gfxdrivers')
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp48
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h1
2 files changed, 20 insertions, 29 deletions
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
index d9346fdf3b..92b30a7e40 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
@@ -181,20 +181,17 @@ public:
IDirectFBSurface *surface;
QPen pen;
- QBrush brush;
bool antialiased;
bool forceRasterPrimitives;
bool simplePen;
- bool simpleBrush;
bool matrixRotShear;
bool matrixScale;
void setTransform(const QTransform &m);
void setPen(const QPen &pen);
- void setBrush(const QBrush &brush);
void setCompositionMode(QPainter::CompositionMode mode);
void setOpacity(quint8 value);
void setRenderHints(QPainter::RenderHints hints);
@@ -207,6 +204,7 @@ public:
inline bool dfbCanHandleClip(const QRect &rect) const;
inline bool dfbCanHandleClip(const QRectF &rect) const;
inline bool dfbCanHandleClip() const;
+ inline bool isSimpleBrush(const QBrush &brush) const;
void drawLines(const QLine *lines, int count) const;
void drawLines(const QLineF *lines, int count) const;
@@ -217,6 +215,7 @@ public:
void fillRects(const QRectF *rects, int count) const;
void drawRects(const QRectF *rects, int count) const;
+
void drawPixmap(const QRectF &dest,
const QPixmap &pixmap, const QRectF &src);
void drawTiledPixmap(const QRectF &dest, const QPixmap &pixmap);
@@ -253,7 +252,7 @@ private:
QDirectFBPaintEnginePrivate::QDirectFBPaintEnginePrivate(QDirectFBPaintEngine *p)
: surface(0), antialiased(false), forceRasterPrimitives(false), simplePen(false),
- simpleBrush(false), matrixRotShear(false), matrixScale(false), lastLockedHeight(-1),
+ matrixRotShear(false), matrixScale(false), lastLockedHeight(-1),
fbWidth(-1), fbHeight(-1), opacity(255), drawFlagsFromCompositionMode(0),
blitFlagsFromCompositionMode(0), porterDuffRule(DSPD_SRC_OVER), dirtyClip(true),
dfbHandledClip(false), dfbDevice(0), q(p)
@@ -287,6 +286,11 @@ bool QDirectFBPaintEnginePrivate::dfbCanHandleClip() const
return dfbHandledClip;
}
+bool QDirectFBPaintEnginePrivate::isSimpleBrush(const QBrush &brush) const
+{
+ return (brush.style() == Qt::NoBrush) || (brush.style() == Qt::SolidPattern && !antialiased);
+}
+
void QDirectFBPaintEnginePrivate::setClipDirty()
{
dirtyClip = true;
@@ -366,13 +370,6 @@ void QDirectFBPaintEnginePrivate::setPen(const QPen &p)
&& (pen.widthF() <= 1 && !matrixScale));
}
-void QDirectFBPaintEnginePrivate::setBrush(const QBrush &b)
-{
- brush = b;
- simpleBrush = (brush.style() == Qt::NoBrush) ||
- (brush.style() == Qt::SolidPattern && !antialiased);
-}
-
void QDirectFBPaintEnginePrivate::setCompositionMode(QPainter::CompositionMode mode)
{
blitFlagsFromCompositionMode = DSBLIT_NOFX;
@@ -755,14 +752,6 @@ void QDirectFBPaintEngine::penChanged()
QRasterPaintEngine::penChanged();
}
-void QDirectFBPaintEngine::brushChanged()
-{
- Q_D(QDirectFBPaintEngine);
- d->setBrush(state()->brush);
-
- QRasterPaintEngine::brushChanged();
-}
-
void QDirectFBPaintEngine::opacityChanged()
{
Q_D(QDirectFBPaintEngine);
@@ -801,7 +790,6 @@ void QDirectFBPaintEngine::setState(QPainterState *s)
QRasterPaintEngine::setState(s);
d->setClipDirty();
d->setPen(state()->pen);
- d->setBrush(state()->brush);
d->setOpacity(quint8(state()->opacity * 255));
d->setCompositionMode(state()->compositionMode());
d->setTransform(state()->transform());
@@ -834,8 +822,10 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->dfbCanHandleClip() || d->matrixRotShear || !d->simpleBrush
- || !d->simplePen || d->forceRasterPrimitives) {
+ const QBrush &brush = state()->brush;
+ if (!d->dfbCanHandleClip() || d->matrixRotShear
+ || !d->simplePen || d->forceRasterPrimitives
+ || !d->isSimpleBrush(brush)) {
d->lock();
QRasterPaintEngine::drawRects(rects, rectCount);
return;
@@ -843,8 +833,8 @@ void QDirectFBPaintEngine::drawRects(const QRect *rects, int rectCount)
d->unlock();
- if (d->brush != Qt::NoBrush) {
- d->setDFBColor(d->brush.color());
+ if (brush != Qt::NoBrush) {
+ d->setDFBColor(brush.color());
d->fillRects(rects, rectCount);
}
if (d->pen != Qt::NoPen) {
@@ -857,8 +847,10 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount)
{
Q_D(QDirectFBPaintEngine);
d->updateClip();
- if (!d->dfbCanHandleClip() || d->matrixRotShear || !d->simpleBrush
- || !d->simplePen || d->forceRasterPrimitives) {
+ const QBrush &brush = state()->brush;
+ if (!d->dfbCanHandleClip() || d->matrixRotShear
+ || !d->simplePen || d->forceRasterPrimitives
+ || !d->isSimpleBrush(brush)) {
d->lock();
QRasterPaintEngine::drawRects(rects, rectCount);
return;
@@ -866,8 +858,8 @@ void QDirectFBPaintEngine::drawRects(const QRectF *rects, int rectCount)
d->unlock();
- if (d->brush != Qt::NoBrush) {
- d->setDFBColor(d->brush.color());
+ if (brush != Qt::NoBrush) {
+ d->setDFBColor(brush.color());
d->fillRects(rects, rectCount);
}
if (d->pen != Qt::NoPen) {
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h
index 3c2cefabdf..e79ec61700 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.h
@@ -96,7 +96,6 @@ public:
virtual void clipEnabledChanged();
virtual void penChanged();
- virtual void brushChanged();
virtual void opacityChanged();
virtual void compositionModeChanged();
virtual void renderHintsChanged();