eglfs: Set swap interval only when there is a context available
Mesa does not like eglSwapInterval calls without a current context. Change-Id: I7ec2d4311586cf74da0461bc951a0e5d9399c35b Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
This commit is contained in:
parent
5fd344389e
commit
e013eba203
@ -53,13 +53,30 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
QEglFSContext::QEglFSContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share,
|
||||
EGLDisplay display, EGLenum eglApi)
|
||||
: QEGLPlatformContext(QEglFSHooks::hooks()->surfaceFormatFor(format), share, display, QEglFSIntegration::chooseConfig(display, QEglFSHooks::hooks()->surfaceFormatFor(format)), eglApi)
|
||||
: QEGLPlatformContext(QEglFSHooks::hooks()->surfaceFormatFor(format), share, display,
|
||||
QEglFSIntegration::chooseConfig(display, QEglFSHooks::hooks()->surfaceFormatFor(format)), eglApi),
|
||||
m_swapIntervalSet(false)
|
||||
{
|
||||
}
|
||||
|
||||
bool QEglFSContext::makeCurrent(QPlatformSurface *surface)
|
||||
{
|
||||
return QEGLPlatformContext::makeCurrent(surface);
|
||||
bool success = QEGLPlatformContext::makeCurrent(surface);
|
||||
|
||||
if (success && !m_swapIntervalSet) {
|
||||
m_swapIntervalSet = true;
|
||||
int swapInterval = 1;
|
||||
QByteArray swapIntervalString = qgetenv("QT_QPA_EGLFS_SWAPINTERVAL");
|
||||
if (!swapIntervalString.isEmpty()) {
|
||||
bool ok;
|
||||
swapInterval = swapIntervalString.toInt(&ok);
|
||||
if (!ok)
|
||||
swapInterval = 1;
|
||||
}
|
||||
eglSwapInterval(eglDisplay(), swapInterval);
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
EGLSurface QEglFSContext::eglSurfaceForPlatformSurface(QPlatformSurface *surface)
|
||||
|
@ -55,6 +55,9 @@ public:
|
||||
bool makeCurrent(QPlatformSurface *surface);
|
||||
EGLSurface eglSurfaceForPlatformSurface(QPlatformSurface *surface);
|
||||
void swapBuffers(QPlatformSurface *surface);
|
||||
|
||||
private:
|
||||
bool m_swapIntervalSet;
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
@ -107,16 +107,6 @@ QEglFSIntegration::QEglFSIntegration()
|
||||
qFatal("EGL error");
|
||||
}
|
||||
|
||||
int swapInterval = 1;
|
||||
QByteArray swapIntervalString = qgetenv("QT_QPA_EGLFS_SWAPINTERVAL");
|
||||
if (!swapIntervalString.isEmpty()) {
|
||||
bool ok;
|
||||
swapInterval = swapIntervalString.toInt(&ok);
|
||||
if (!ok)
|
||||
swapInterval = 1;
|
||||
}
|
||||
eglSwapInterval(mDisplay, swapInterval);
|
||||
|
||||
mScreen = new QEglFSScreen(mDisplay);
|
||||
screenAdded(mScreen);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user