src/opengl/qgl.cpp
branchRCL_3
changeset 5 d3bac044e0f0
parent 4 3b1da2848fc7
child 8 3f74d0d4af4c
--- a/src/opengl/qgl.cpp	Fri Feb 19 23:40:16 2010 +0200
+++ b/src/opengl/qgl.cpp	Fri Mar 12 15:46:37 2010 +0200
@@ -4393,6 +4393,13 @@
    \note This function temporarily disables depth-testing when the
    text is drawn.
 
+   \note This function can only be used inside a
+   QPainter::beginNativePainting()/QPainter::endNativePainting() block
+   if the default OpenGL paint engine is QPaintEngine::OpenGL. To make
+   QPaintEngine::OpenGL the default GL engine, call
+   QGL::setPreferredPaintEngine(QPaintEngine::OpenGL) before the
+   QApplication constructor.
+
    \l{Overpainting Example}{Overpaint} with QPainter::drawText() instead.
 */
 
@@ -4412,8 +4419,17 @@
     bool auto_swap = autoBufferSwap();
 
     QPaintEngine::Type oldEngineType = qgl_engine_selector()->preferredPaintEngine();
+
+    QPaintEngine *engine = paintEngine();
+    if (engine && (oldEngineType == QPaintEngine::OpenGL2) && engine->isActive()) {
+        qWarning("QGLWidget::renderText(): Calling renderText() while a GL 2 paint engine is"
+                 " active on the same device is not allowed.");
+        return;
+    }
+
+    // this changes what paintEngine() returns
     qgl_engine_selector()->setPreferredPaintEngine(QPaintEngine::OpenGL);
-    QPaintEngine *engine = paintEngine();
+    engine = paintEngine();
     QPainter *p;
     bool reuse_painter = false;
     if (engine->isActive()) {
@@ -4506,8 +4522,17 @@
     win_y = height - win_y; // y is inverted
 
     QPaintEngine::Type oldEngineType = qgl_engine_selector()->preferredPaintEngine();
+    QPaintEngine *engine = paintEngine();
+
+    if (engine && (oldEngineType == QPaintEngine::OpenGL2) && engine->isActive()) {
+        qWarning("QGLWidget::renderText(): Calling renderText() while a GL 2 paint engine is"
+                 " active on the same device is not allowed.");
+        return;
+    }
+
+    // this changes what paintEngine() returns
     qgl_engine_selector()->setPreferredPaintEngine(QPaintEngine::OpenGL);
-    QPaintEngine *engine = paintEngine();
+    engine = paintEngine();
     QPainter *p;
     bool reuse_painter = false;
     bool use_depth_testing = glIsEnabled(GL_DEPTH_TEST);