summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbconnection.cpp
diff options
context:
space:
mode:
authorGatis Paeglis <gatis.paeglis@qt.io>2018-10-14 19:46:20 +0200
committerGatis Paeglis <gatis.paeglis@qt.io>2018-10-14 18:38:07 +0000
commita880780ff962dc31be24b508f811c1a2fd0b0f36 (patch)
tree18b4f892bc0daaa16177d3909b578a3a1ccbc5f6 /src/plugins/platforms/xcb/qxcbconnection.cpp
parent3af4b59e8b59c7b658c925e1f644d31b89e39896 (diff)
Revert "XCB: Do not create instance of QPlatformIntegration for invalid displays"
This reverts commit 67cc8fea106c35c7ca75bf476667d07b3bbf3257. I forgot about this patch and now it makes rebasing the local changes too time-consuming. Besides, 67cc8fea10 broke a build for -no-xcb-xlib. I will restore this patch, with adaptations to the new QXcb*Connection hierarchy. Task-number: QTBUG-68859 Change-Id: I938f32b5da22ce18f95d761f9b34e77fff923e24 Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbconnection.cpp')
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.cpp58
1 files changed, 15 insertions, 43 deletions
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
index 4e24c970b4..09b920a09e 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
@@ -525,59 +525,31 @@ void QXcbConnection::initializeScreens()
}
}
-QXcbConnection *QXcbConnection::create(QXcbNativeInterface *nativeInterface, bool canGrabServer,
- xcb_visualid_t defaultVisualId,
- const char *displayNameIn)
-{
- const QByteArray displayName = displayNameIn ? QByteArray(displayNameIn) : qgetenv("DISPLAY");
- int primaryScreenNumber = 0;
- void *xlibDisplay = nullptr;
- xcb_connection_t *connection = nullptr;
+QXcbConnection::QXcbConnection(QXcbNativeInterface *nativeInterface, bool canGrabServer, xcb_visualid_t defaultVisualId, const char *displayName)
+ : m_canGrabServer(canGrabServer)
+ , m_defaultVisualId(defaultVisualId)
+ , m_displayName(displayName ? QByteArray(displayName) : qgetenv("DISPLAY"))
+ , m_nativeInterface(nativeInterface)
+{
#if QT_CONFIG(xcb_xlib)
- Display *dpy = XOpenDisplay(displayName.constData());
+ Display *dpy = XOpenDisplay(m_displayName.constData());
if (dpy) {
- primaryScreenNumber = DefaultScreen(dpy);
- connection = XGetXCBConnection(dpy);
+ m_primaryScreenNumber = DefaultScreen(dpy);
+ m_connection = XGetXCBConnection(dpy);
XSetEventQueueOwner(dpy, XCBOwnsEventQueue);
XSetErrorHandler(nullErrorHandler);
XSetIOErrorHandler(ioErrorHandler);
- xlibDisplay = dpy;
+ m_xlib_display = dpy;
}
#else
- connection = xcb_connect(displayName.constData(), &primaryScreenNumber);
+ m_connection = xcb_connect(m_displayName.constData(), &m_primaryScreenNumber);
#endif // QT_CONFIG(xcb_xlib)
- if (Q_UNLIKELY(connection == nullptr)) {
- qWarning("QXcbConnection: Could not connect to display \"%s\"", displayName.constData());
- return nullptr;
- }
- if (Q_UNLIKELY(xcb_connection_has_error(connection))) {
-#if QT_CONFIG(xcb_xlib)
- XCloseDisplay(static_cast<Display *>(xlibDisplay));
-#else
- xcb_disconnect(connection);
-#endif
- qWarning("QXcbConnection: Errors occurred connecting to display \"%s\"", displayName.constData());
- return nullptr;
- }
- return new QXcbConnection(connection, primaryScreenNumber, nativeInterface,
- canGrabServer, defaultVisualId, displayName, xlibDisplay);
-}
+ if (Q_UNLIKELY(!m_connection || xcb_connection_has_error(m_connection))) {
+ qCWarning(lcQpaScreen, "QXcbConnection: Could not connect to display %s", m_displayName.constData());
+ return;
+ }
-QXcbConnection::QXcbConnection(xcb_connection_t *c, int primaryScreenNumber,
- QXcbNativeInterface *nativeInterface, bool canGrabServer,
- xcb_visualid_t defaultVisualId, const QByteArray &displayName,
- void *xlibDisplay)
- : m_connection(c)
- , m_canGrabServer(canGrabServer)
- , m_defaultVisualId(defaultVisualId)
- , m_primaryScreenNumber(primaryScreenNumber)
- , m_displayName(displayName)
- , m_nativeInterface(nativeInterface)
-#if QT_CONFIG(xcb_xlib)
- , m_xlib_display(xlibDisplay)
-#endif
-{
m_reader = new QXcbEventReader(this);
m_reader->start();