Fix texture glyph cache setup in old OpenGL paint engine

Caused assert-crash reported on Windows.

Task-number: QTBUG-37027
Change-Id: If84b970a153570115afb344797728a0b1a04db5b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This commit is contained in:
Tor Arne Vestbø 2014-02-24 11:34:20 +01:00 committed by The Qt Project
parent 74d4fcea4a
commit aac68a9ef3

View File

@ -1482,9 +1482,10 @@ void QGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem)
// don't try to cache huge fonts or vastly transformed fonts // don't try to cache huge fonts or vastly transformed fonts
QFontEngine *fontEngine = textItem->fontEngine(); QFontEngine *fontEngine = textItem->fontEngine();
if (shouldDrawCachedGlyphs(fontEngine, s->matrix)) { if (shouldDrawCachedGlyphs(fontEngine, s->matrix)) {
QFontEngine::GlyphFormat glyphFormat = fontEngine->glyphFormat >= 0
? QFontEngine::GlyphFormat(textItem->fontEngine()->glyphFormat) QFontEngine::GlyphFormat glyphFormat = fontEngine->glyphFormat != QFontEngine::Format_None
: d->glyphCacheFormat; ? fontEngine->glyphFormat : d->glyphCacheFormat;
if (glyphFormat == QFontEngine::Format_A32) { if (glyphFormat == QFontEngine::Format_A32) {
if (!QGLFramebufferObject::hasOpenGLFramebufferObjects() if (!QGLFramebufferObject::hasOpenGLFramebufferObjects()
|| d->device->alphaRequested() || s->matrix.type() > QTransform::TxTranslate || d->device->alphaRequested() || s->matrix.type() > QTransform::TxTranslate
@ -1532,10 +1533,8 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
QTransform::TransformationType txtype = s->matrix.type(); QTransform::TransformationType txtype = s->matrix.type();
QFontEngine::GlyphFormat glyphFormat = ti.fontEngine->glyphFormat >= 0 QFontEngine::GlyphFormat glyphFormat = ti.fontEngine->glyphFormat != QFontEngine::Format_None
? ti.fontEngine->glyphFormat ? ti.fontEngine->glyphFormat : d->glyphCacheFormat;
: d->glyphCacheFormat;
if (glyphFormat == QFontEngine::Format_A32) { if (glyphFormat == QFontEngine::Format_A32) {
if (!QGLFramebufferObject::hasOpenGLFramebufferObjects() if (!QGLFramebufferObject::hasOpenGLFramebufferObjects()