summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xlib
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/xlib')
-rw-r--r--src/plugins/platforms/xlib/qglxintegration.cpp3
-rw-r--r--src/plugins/platforms/xlib/qxlibwindow.cpp7
-rw-r--r--src/plugins/platforms/xlib/qxlibwindow.h2
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;