summaryrefslogtreecommitdiffstats
path: root/src/gui/egl/qegl.cpp
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-08-25 08:51:52 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-08-25 08:51:52 (GMT)
commitdf2e8fbe96fab8e034ab897b8a767b4a473b34ad (patch)
tree578716637feeaeffaca8908c62a7c350aeef8e22 /src/gui/egl/qegl.cpp
parent71bc8dc21687f1b15fc75a789f91753ace771b84 (diff)
parent02e2ff4597a7fe81ecbb4b1ef3c5e4a5ac6b7339 (diff)
downloadQt-df2e8fbe96fab8e034ab897b8a767b4a473b34ad.zip
Qt-df2e8fbe96fab8e034ab897b8a767b4a473b34ad.tar.gz
Qt-df2e8fbe96fab8e034ab897b8a767b4a473b34ad.tar.bz2
Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-releng-team
* 'master' of git://scm.dev.nokia.troll.no/qt/qt-releng-team: (120 commits) Spelling fix Fixed lost flushes in raster window surface. Fix compilation of qjpeg on MinGW with GCC 4.6 uikit: Use correct pixmap data format. Correctly position aliased lines with flat caps Make the DBus timeout configurable in QDBusAbstractInterface. Fix non-ascii name issues in ICD. Compile fix for Symbian 5th and earlier Improve documentation for QDeclarativeView::setSource() fix copying webkit guide under windows Add a QApplication::queryKeyboardModifiers() method. Symbian: Fix backspace on empty lines of multiline textedits Handle CloseSoftwareInputPanel event in QCoeFepInputContext uikit: Fixes for Open GL ES 1 and for pre-3GS devices uikit: Fix warning. Use thumb instructions for uikit Fix compilation with thumb2. Update uikit README: svg works, warn about thumb Fix delayed password masking mid-string. Disabled splitscreen translation still moves screen ...
Diffstat (limited to 'src/gui/egl/qegl.cpp')
-rw-r--r--src/gui/egl/qegl.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp
index 2f2f772..2a37d45 100644
--- a/src/gui/egl/qegl.cpp
+++ b/src/gui/egl/qegl.cpp
@@ -94,6 +94,7 @@ QEglContext::QEglContext()
, current(false)
, ownsContext(true)
, sharing(false)
+ , apiChanged(false)
{
QEglContextTracker::ref();
}
@@ -435,9 +436,20 @@ bool QEglContext::makeCurrent(EGLSurface surface)
return false;
}
+#ifdef Q_OS_SYMBIAN
+ apiChanged = false;
+ if (currentContext(apiType)
+ && currentContext(apiType)->ctx != eglGetCurrentContext()) {
+ // some other EGL based API active. Complete its rendering
+ eglWaitClient();
+ apiChanged = true;
+ }
+#endif
+
// If lazyDoneCurrent() was called on the surface, then we may be able
// to assume that it is still current within the thread.
- if (surface == currentSurface && currentContext(apiType) == this) {
+ if (surface == currentSurface && currentContext(apiType) == this
+ && !apiChanged) {
current = true;
return true;
}
@@ -512,6 +524,13 @@ bool QEglContext::swapBuffers(EGLSurface surface)
bool ok = eglSwapBuffers(QEgl::display(), surface);
if (!ok)
qWarning() << "QEglContext::swapBuffers():" << QEgl::errorString();
+
+#ifdef Q_OS_SYMBIAN
+ if (apiChanged) {
+ eglWaitClient();
+ apiChanged = false;
+ }
+#endif
return ok;
}