diff options
author | Gunnar Sletta <gunnar@trolltech.com> | 2009-10-19 04:58:20 (GMT) |
---|---|---|
committer | Gunnar Sletta <gunnar@trolltech.com> | 2009-10-19 04:58:20 (GMT) |
commit | 91e133d9eeba0b7ea87a3ddb3f10d2a2b345473d (patch) | |
tree | 499f3a3e0ba67c76da18a33fd331569670578a79 /src/opengl/gl2paintengineex | |
parent | 4a0e3170c779a6a37954c3dfcfd0b9f0ce144701 (diff) | |
parent | c3bab81d5966c9bd3a42d9c5cbb9d8ad35a1b330 (diff) | |
download | Qt-91e133d9eeba0b7ea87a3ddb3f10d2a2b345473d.zip Qt-91e133d9eeba0b7ea87a3ddb3f10d2a2b345473d.tar.gz Qt-91e133d9eeba0b7ea87a3ddb3f10d2a2b345473d.tar.bz2 |
Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/qt into 4.6
Diffstat (limited to 'src/opengl/gl2paintengineex')
-rw-r--r-- | src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 25 | ||||
-rw-r--r-- | src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h | 3 |
2 files changed, 15 insertions, 13 deletions
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index d7ce604..13efbda 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1625,7 +1625,6 @@ bool QGL2PaintEngineEx::begin(QPaintDevice *pdev) const QSize sz = d->device->size(); d->width = sz.width(); d->height = sz.height(); - d->last_created_state = 0; d->mode = BrushDrawingMode; d->brushTextureDirty = true; d->brushUniformsDirty = true; @@ -2023,27 +2022,32 @@ void QGL2PaintEngineEx::setState(QPainterState *new_state) QPaintEngineEx::setState(s); - if (s == d->last_created_state) { - d->last_created_state = 0; + if (s->isNew) { + // Newly created state object. The call to setState() + // will either be followed by a call to begin(), or we are + // setting the state as part of a save(). + s->isNew = false; return; } - if (old_state == s || s->renderHintsChanged) + // Setting the state as part of a restore(). + + if (old_state == s || old_state->renderHintsChanged) renderHintsChanged(); - if (old_state == s || s->matrixChanged) { + if (old_state == s || old_state->matrixChanged) { d->matrixDirty = true; d->simpleShaderMatrixUniformDirty = true; d->shaderMatrixUniformDirty = true; } - if (old_state == s || s->compositionModeChanged) + if (old_state == s || old_state->compositionModeChanged) d->compositionModeDirty = true; - if (old_state == s || s->opacityChanged) + if (old_state == s || old_state->opacityChanged) d->opacityUniformDirty = true; - if (old_state == s || s->clipChanged) { + if (old_state == s || old_state->clipChanged) { if (old_state && old_state != s && old_state->canRestoreClip) { d->updateClipScissorTest(); glDepthFunc(GL_LEQUAL); @@ -2055,8 +2059,6 @@ void QGL2PaintEngineEx::setState(QPainterState *new_state) QPainterState *QGL2PaintEngineEx::createState(QPainterState *orig) const { - Q_D(const QGL2PaintEngineEx); - if (orig) const_cast<QGL2PaintEngineEx *>(this)->ensureActive(); @@ -2072,7 +2074,6 @@ QPainterState *QGL2PaintEngineEx::createState(QPainterState *orig) const s->renderHintsChanged = false; s->clipChanged = false; - d->last_created_state = s; return s; } @@ -2085,6 +2086,7 @@ void QGL2PaintEngineEx::setRenderTextActive(bool active) QOpenGL2PaintEngineState::QOpenGL2PaintEngineState(QOpenGL2PaintEngineState &other) : QPainterState(other) { + isNew = true; needsClipBufferClear = other.needsClipBufferClear; clipTestEnabled = other.clipTestEnabled; currentClip = other.currentClip; @@ -2094,6 +2096,7 @@ QOpenGL2PaintEngineState::QOpenGL2PaintEngineState(QOpenGL2PaintEngineState &oth QOpenGL2PaintEngineState::QOpenGL2PaintEngineState() { + isNew = true; needsClipBufferClear = true; clipTestEnabled = false; canRestoreClip = true; diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h index 46be398..5704a04 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h @@ -82,6 +82,7 @@ public: QOpenGL2PaintEngineState(); ~QOpenGL2PaintEngineState(); + uint isNew : 1; uint needsClipBufferClear : 1; uint clipTestEnabled : 1; uint canRestoreClip : 1; @@ -212,8 +213,6 @@ public: EngineMode mode; QFontEngineGlyphCache::Type glyphCacheType; - mutable QOpenGL2PaintEngineState *last_created_state; - // Dirty flags bool matrixDirty; // Implies matrix uniforms are also dirty bool compositionModeDirty; |