summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbintegration.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2017-08-11 12:01:12 -0700
committerThiago Macieira <thiago.macieira@intel.com>2017-08-16 15:52:02 +0000
commitcdc79f5ebc0ec1898e3845acb9c880b5e69e593b (patch)
tree18f2b3a12d77d33b6cc859b502358976c169264d /src/plugins/platforms/xcb/qxcbintegration.cpp
parentbaf1158c48c3342f4e90d83c3b93236535aac285 (diff)
XCB: Don't core-dump if we can't connect to the X displayName
Exit with error, but don't crash. Change-Id: Ie05c6480d8a44fda817ffffd14d9dfd8c951beef Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbintegration.cpp')
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
index b372ecd7c4..c9ecdceb0d 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.cpp
+++ b/src/plugins/platforms/xcb/qxcbintegration.cpp
@@ -178,12 +178,25 @@ QXcbIntegration::QXcbIntegration(const QStringList &parameters, int &argc, char
const int numParameters = parameters.size();
m_connections.reserve(1 + numParameters / 2);
- m_connections << new QXcbConnection(m_nativeInterface.data(), m_canGrab, m_defaultVisualId, displayName);
+ auto conn = new QXcbConnection(m_nativeInterface.data(), m_canGrab, m_defaultVisualId, displayName);
+ if (conn->isConnected())
+ m_connections << conn;
+ else
+ delete conn;
for (int i = 0; i < numParameters - 1; i += 2) {
qCDebug(lcQpaScreen) << "connecting to additional display: " << parameters.at(i) << parameters.at(i+1);
QString display = parameters.at(i) + QLatin1Char(':') + parameters.at(i+1);
- m_connections << new QXcbConnection(m_nativeInterface.data(), m_canGrab, m_defaultVisualId, display.toLatin1().constData());
+ conn = new QXcbConnection(m_nativeInterface.data(), m_canGrab, m_defaultVisualId, display.toLatin1().constData());
+ if (conn->isConnected())
+ m_connections << conn;
+ else
+ delete conn;
+ }
+
+ if (m_connections.isEmpty()) {
+ qCritical("Could not connect to any X display.");
+ exit(1);
}
m_fontDatabase.reset(new QGenericUnixFontDatabase());