diff options
Diffstat (limited to 'src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp')
-rw-r--r-- | src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index d2c63ddc10..854b71a153 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -76,10 +76,9 @@ #include <QPaintEngine> #include <private/qpainter_p.h> #include <private/qfontengine_p.h> -#include <private/qpixmapdata_gl_p.h> #include <private/qdatabuffer_p.h> #include <private/qstatictext_p.h> -#include <private/qtriangulator_p.h> +#include <QtGui/private/qtriangulator_p.h> #include "qglengineshadermanager_p.h" #include "qgl2pexvertexarray_p.h" @@ -1581,10 +1580,9 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp QGLTextureGlyphCache *cache = (QGLTextureGlyphCache *) staticTextItem->fontEngine()->glyphCache(cacheKey, glyphType, QTransform()); - if (!cache || cache->cacheType() != glyphType || cache->context() == 0) { - cache = new QGLTextureGlyphCache(ctx, glyphType, QTransform()); + if (!cache || cache->cacheType() != glyphType || cache->contextGroup() == 0) { + cache = new QGLTextureGlyphCache(glyphType, QTransform()); staticTextItem->fontEngine()->setGlyphCache(cacheKey, cache); - cache->insert(ctx, cache); recreateVertexArrays = true; } @@ -2048,21 +2046,13 @@ bool QGL2PaintEngineEx::begin(QPaintDevice *pdev) bool QGL2PaintEngineEx::end() { Q_D(QGL2PaintEngineEx); - QGLContext *ctx = d->ctx; + QGLContext *ctx = d->ctx; glUseProgram(0); d->transferMode(BrushDrawingMode); d->device->endPaint(); -#if defined(Q_WS_X11) - // On some (probably all) drivers, deleting an X pixmap which has been bound to a texture - // before calling glFinish/swapBuffers renders garbage. Presumably this is because X deletes - // the pixmap behind the driver's back before it's had a chance to use it. To fix this, we - // reference all QPixmaps which have been bound to stop them being deleted and only deref - // them here, after swapBuffers, where they can be safely deleted. - ctx->d_func()->boundPixmaps.clear(); -#endif - d->ctx->d_ptr->active_engine = 0; + ctx->d_ptr->active_engine = 0; d->resetGLState(); @@ -2335,8 +2325,8 @@ void QGL2PaintEngineExPrivate::systemStateChanged() if (systemClip.isEmpty()) { useSystemClip = false; } else { - if (q->paintDevice()->devType() == QInternal::Widget && currentClipWidget) { - QWidgetPrivate *widgetPrivate = qt_widget_private(currentClipWidget->window()); + if (q->paintDevice()->devType() == QInternal::Widget && currentClipDevice) { + QWidgetPrivate *widgetPrivate = qt_widget_private(static_cast<QWidget *>(currentClipDevice)->window()); useSystemClip = widgetPrivate->extra && widgetPrivate->extra->inRenderWithPainter; } else { useSystemClip = true; |