diff options
Diffstat (limited to 'src/plugins/platforms/xlib')
-rw-r--r-- | src/plugins/platforms/xlib/qglxintegration.cpp | 3 | ||||
-rw-r--r-- | src/plugins/platforms/xlib/qxlibwindow.cpp | 7 | ||||
-rw-r--r-- | src/plugins/platforms/xlib/qxlibwindow.h | 2 |
3 files changed, 8 insertions, 4 deletions
diff --git a/src/plugins/platforms/xlib/qglxintegration.cpp b/src/plugins/platforms/xlib/qglxintegration.cpp index e78689374a..51621408b9 100644 --- a/src/plugins/platforms/xlib/qglxintegration.cpp +++ b/src/plugins/platforms/xlib/qglxintegration.cpp @@ -65,6 +65,7 @@ QGLXContext::QGLXContext(QXlibScreen *screen, const QSurfaceFormat &format, QPla : QPlatformOpenGLContext() , m_screen(screen) , m_context(0) + , m_windowFormat(format) { GLXContext shareGlxContext = 0; if (share) @@ -77,7 +78,7 @@ QGLXContext::QGLXContext(QXlibScreen *screen, const QSurfaceFormat &format, QPla m_context = glXCreateNewContext(xDisplay,config,GLX_RGBA_TYPE,shareGlxContext,TRUE); m_windowFormat = qglx_surfaceFormatFromGLXFBConfig(xDisplay,config,m_context); } else { - XVisualInfo *visualInfo = qglx_findVisualInfo(xDisplay, screen->xScreenNumber(), format); + XVisualInfo *visualInfo = qglx_findVisualInfo(xDisplay, screen->xScreenNumber(), &m_windowFormat); if (!visualInfo) qFatal("Could not initialize GLX"); m_context = glXCreateContext(xDisplay, visualInfo, shareGlxContext, true); diff --git a/src/plugins/platforms/xlib/qxlibwindow.cpp b/src/plugins/platforms/xlib/qxlibwindow.cpp index 635caf81f8..94c4332e65 100644 --- a/src/plugins/platforms/xlib/qxlibwindow.cpp +++ b/src/plugins/platforms/xlib/qxlibwindow.cpp @@ -82,11 +82,12 @@ QXlibWindow::QXlibWindow(QWindow *window) int w = window->width(); int h = window->height(); + mSurfaceFormat = window->requestedFormat(); + #if !defined(QT_NO_OPENGL) if(window->surfaceType() == QWindow::OpenGLSurface) { #if !defined(QT_OPENGL_ES_2) - XVisualInfo *visualInfo = qglx_findVisualInfo(mScreen->display()->nativeDisplay(), mScreen->xScreenNumber(), - window->format()); + XVisualInfo *visualInfo = qglx_findVisualInfo(mScreen->display()->nativeDisplay(), mScreen->xScreenNumber(), &mSurfaceFormat); if (!visualInfo) qFatal("Could not initialize GLX"); #else @@ -694,7 +695,7 @@ void QXlibWindow::setCursor(const Cursor &cursor) QSurfaceFormat QXlibWindow::format() const { - return window()->format(); + return mSurfaceFormat; } diff --git a/src/plugins/platforms/xlib/qxlibwindow.h b/src/plugins/platforms/xlib/qxlibwindow.h index 8287f3a8a2..6b9e2d63bd 100644 --- a/src/plugins/platforms/xlib/qxlibwindow.h +++ b/src/plugins/platforms/xlib/qxlibwindow.h @@ -143,6 +143,8 @@ private: QImage::Format mFormat; Visual* mVisual; + QSurfaceFormat mSurfaceFormat; + GC createGC(); QPlatformOpenGLContext *mGLContext; |