summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-02-12 08:03:26 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-02-12 08:03:26 (GMT)
commit4a47bf6a06a4f7ebbf2336cd643c50332ac76d6d (patch)
tree48703d0af598d46c7938e9e424d453eb783cf673
parentc633ce4346fa04584e5168b77924ca6a42601435 (diff)
parent6a8a8f851edbc9b93948bf88d8c792e1c5dfda35 (diff)
downloadQt-4a47bf6a06a4f7ebbf2336cd643c50332ac76d6d.zip
Qt-4a47bf6a06a4f7ebbf2336cd643c50332ac76d6d.tar.gz
Qt-4a47bf6a06a4f7ebbf2336cd643c50332ac76d6d.tar.bz2
Merge branch 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-2: Turned off subpixel AA text on surface with alpha in GL2 engine. Changed a couple of GL defines from decimal to hex.
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp31
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h1
-rw-r--r--src/opengl/qglextensions_p.h4
3 files changed, 27 insertions, 9 deletions
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index b17e3a1..d2fb925 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -1332,14 +1332,14 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
? QFontEngineGlyphCache::Type(ti.fontEngine->glyphFormat)
: d->glyphCacheType;
- if (txtype > QTransform::TxTranslate)
- glyphType = QFontEngineGlyphCache::Raster_A8;
- if (glyphType == QFontEngineGlyphCache::Raster_RGBMask
- && state()->composition_mode != QPainter::CompositionMode_Source
- && state()->composition_mode != QPainter::CompositionMode_SourceOver)
- {
- drawCached = false;
+ if (glyphType == QFontEngineGlyphCache::Raster_RGBMask) {
+ if (d->deviceHasAlpha || txtype > QTransform::TxTranslate
+ || (state()->composition_mode != QPainter::CompositionMode_Source
+ && state()->composition_mode != QPainter::CompositionMode_SourceOver))
+ {
+ glyphType = QFontEngineGlyphCache::Raster_A8;
+ }
}
if (drawCached) {
@@ -1630,6 +1630,23 @@ bool QGL2PaintEngineEx::begin(QPaintDevice *pdev)
d->dirtyStencilRegion = QRect(0, 0, d->width, d->height);
d->stencilClean = true;
+ switch (pdev->devType()) {
+ case QInternal::Pixmap:
+ d->deviceHasAlpha = static_cast<QPixmap *>(pdev)->hasAlphaChannel();
+ break;
+ case QInternal::FramebufferObject:
+ {
+ GLenum f = static_cast<QGLFramebufferObject *>(pdev)->format().internalTextureFormat();
+ d->deviceHasAlpha = (f != GL_RGB && f != GL_RGB5 && f != GL_RGB8);
+ }
+ break;
+ default:
+ // widget, pbuffer
+ d->deviceHasAlpha = d->ctx->d_func()->reqFormat.alpha();
+ break;
+ }
+
+
// Calling begin paint should make the correct context current. So, any
// code which calls into GL or otherwise needs a current context *must*
// go after beginPaint:
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
index 35c88f4..e816e17 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
@@ -278,6 +278,7 @@ public:
bool needsSync;
bool multisamplingAlwaysEnabled;
+ bool deviceHasAlpha;
GLfloat depthRange[2];
diff --git a/src/opengl/qglextensions_p.h b/src/opengl/qglextensions_p.h
index f6613fd..4edd5f7 100644
--- a/src/opengl/qglextensions_p.h
+++ b/src/opengl/qglextensions_p.h
@@ -465,11 +465,11 @@ struct QGLExtensionFuncs
#endif
#ifndef GL_RGB16
-#define GL_RGB16 32852
+#define GL_RGB16 0x8054
#endif
#ifndef GL_UNSIGNED_SHORT_5_6_5
-#define GL_UNSIGNED_SHORT_5_6_5 33635
+#define GL_UNSIGNED_SHORT_5_6_5 0x8363
#endif
#ifndef GL_UNSIGNED_INT_8_8_8_8_REV