Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qxcbglxwindow.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qxcbglxwindow.h"
5
6#include "qxcbscreen.h"
7#include <QtGui/private/qglxconvenience_p.h>
8#include <QDebug>
9
11
16
20
21const xcb_visualtype_t *QXcbGlxWindow::createVisual()
22{
23 QXcbScreen *scr = xcbScreen();
24 if (!scr)
26
27 qCDebug(lcQpaGl) << "Requested format before FBConfig/Visual selection:" << m_format;
28
29 Display *dpy = static_cast<Display *>(scr->connection()->xlib_display());
30 const char *glxExts = glXQueryExtensionsString(dpy, scr->screenNumber());
31 int flags = 0;
32 if (glxExts) {
33 qCDebug(lcQpaGl, "Available GLX extensions: %s", glxExts);
34 if (strstr(glxExts, "GLX_EXT_framebuffer_sRGB") || strstr(glxExts, "GLX_ARB_framebuffer_sRGB"))
36 }
37
38 const auto formatBackup = m_format;
39 XVisualInfo *visualInfo = qglx_findVisualInfo(dpy, scr->screenNumber(), &m_format, GLX_WINDOW_BIT, flags);
40 if (!visualInfo) {
41 qCDebug(lcQpaGl) << "No XVisualInfo for format" << m_format;
42 // restore initial format before requesting it again
43 m_format = formatBackup;
45 }
46 const xcb_visualtype_t *xcb_visualtype = scr->visualForId(visualInfo->visualid);
47 XFree(visualInfo);
48
49 qCDebug(lcQpaGl) << "Got format:" << m_format;
50
51 return xcb_visualtype;
52}
53
\inmodule QtGui
Definition qwindow.h:63
QXcbGlxWindow(QWindow *window)
const xcb_visualtype_t * createVisual() override
QXcbConnection * connection() const
Definition qxcbobject.h:17
const xcb_visualtype_t * visualForId(xcb_visualid_t visualid) const
int screenNumber() const
Definition qxcbscreen.h:149
virtual const xcb_visualtype_t * createVisual()
QSurfaceFormat m_format
Definition qxcbwindow.h:236
QXcbScreen * xcbScreen() const
Combined button and popup list for selecting options.
XVisualInfo * qglx_findVisualInfo(Display *display, int screen, QSurfaceFormat *format, int drawableBit, int flags)
@ QGLX_SUPPORTS_SRGB
#define qCDebug(category,...)
GLbitfield flags
struct _XDisplay Display
aWidget window() -> setWindowTitle("New Window Title")
[2]