diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2011-08-25 08:51:52 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2011-08-25 08:51:52 (GMT) |
commit | df2e8fbe96fab8e034ab897b8a767b4a473b34ad (patch) | |
tree | 578716637feeaeffaca8908c62a7c350aeef8e22 /src/gui/egl/qegl.cpp | |
parent | 71bc8dc21687f1b15fc75a789f91753ace771b84 (diff) | |
parent | 02e2ff4597a7fe81ecbb4b1ef3c5e4a5ac6b7339 (diff) | |
download | Qt-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.cpp | 21 |
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; } |