summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbintegration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbintegration.cpp')
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.cpp55
1 files changed, 21 insertions, 34 deletions
diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
index cec25ef47b..e49ca5225c 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.cpp
+++ b/src/plugins/platforms/xcb/qxcbintegration.cpp
@@ -137,6 +137,8 @@ QXcbIntegration::QXcbIntegration(const QStringList &parameters, int &argc, char
, m_canGrab(true)
, m_defaultVisualId(UINT_MAX)
{
+ Q_UNUSED(parameters);
+
m_instance = this;
qApp->setAttribute(Qt::AA_CompressHighFrequencyEvents, true);
@@ -196,40 +198,27 @@ QXcbIntegration::QXcbIntegration(const QStringList &parameters, int &argc, char
if (canNotGrabEnv)
m_canGrab = false;
- const int numParameters = parameters.size();
- m_connections.reserve(1 + numParameters / 2);
-
- auto conn = new QXcbConnection(m_nativeInterface.data(), m_canGrab, m_defaultVisualId, displayName);
- if (!conn->isConnected()) {
- delete conn;
+ m_connection = new QXcbConnection(m_nativeInterface.data(), m_canGrab, m_defaultVisualId, displayName);
+ if (!m_connection->isConnected()) {
+ delete m_connection;
+ m_connection = nullptr;
return;
}
- m_connections << conn;
-
- // ### Qt 6 (QTBUG-52408) remove this multi-connection code path
- for (int i = 0; i < numParameters - 1; i += 2) {
- qCDebug(lcQpaXcb) << "connecting to additional display: " << parameters.at(i) << parameters.at(i+1);
- QString display = parameters.at(i) + QLatin1Char(':') + parameters.at(i+1);
- conn = new QXcbConnection(m_nativeInterface.data(), m_canGrab, m_defaultVisualId, display.toLatin1().constData());
- if (conn->isConnected())
- m_connections << conn;
- else
- delete conn;
- }
m_fontDatabase.reset(new QGenericUnixFontDatabase());
#if QT_CONFIG(xcb_native_painting)
if (nativePaintingEnabled()) {
qCDebug(lcQpaXcb, "QXCB USING NATIVE PAINTING");
- qt_xcb_native_x11_info_init(defaultConnection());
+ qt_xcb_native_x11_info_init(connection());
}
#endif
}
QXcbIntegration::~QXcbIntegration()
{
- qDeleteAll(m_connections);
+ delete m_connection;
+ m_connection = nullptr;
m_instance = nullptr;
}
@@ -249,7 +238,7 @@ QPlatformWindow *QXcbIntegration::createPlatformWindow(QWindow *window) const
const bool isTrayIconWindow = QXcbWindow::isTrayIconWindow(window);;
if (window->type() != Qt::Desktop && !isTrayIconWindow) {
if (window->supportsOpenGL()) {
- glIntegration = defaultConnection()->glIntegration();
+ glIntegration = connection()->glIntegration();
if (glIntegration) {
QXcbWindow *xcbWindow = glIntegration->createWindow(window);
xcbWindow->create();
@@ -324,7 +313,7 @@ bool QXcbIntegration::hasCapability(QPlatformIntegration::Capability cap) const
case OpenGL:
case ThreadedOpenGL:
{
- if (const auto *integration = defaultConnection()->glIntegration())
+ if (const auto *integration = connection()->glIntegration())
return cap != ThreadedOpenGL || integration->supportsThreadedOpenGL();
return false;
}
@@ -339,8 +328,8 @@ bool QXcbIntegration::hasCapability(QPlatformIntegration::Capability cap) const
case SwitchableWidgetComposition:
{
- return m_connections.at(0)->glIntegration()
- && m_connections.at(0)->glIntegration()->supportsSwitchableWidgetComposition();
+ return m_connection->glIntegration()
+ && m_connection->glIntegration()->supportsSwitchableWidgetComposition();
}
default: return QPlatformIntegration::hasCapability(cap);
@@ -349,7 +338,7 @@ bool QXcbIntegration::hasCapability(QPlatformIntegration::Capability cap) const
QAbstractEventDispatcher *QXcbIntegration::createEventDispatcher() const
{
- return QXcbEventDispatcher::createEventDispatcher(defaultConnection());
+ return QXcbEventDispatcher::createEventDispatcher(connection());
}
void QXcbIntegration::initialize()
@@ -364,7 +353,7 @@ void QXcbIntegration::initialize()
if (!m_inputContext && icStr != defaultInputContext && icStr != QLatin1String("none"))
m_inputContext.reset(QPlatformInputContextFactory::create(defaultInputContext));
- defaultConnection()->keyboard()->initialize();
+ connection()->keyboard()->initialize();
}
void QXcbIntegration::moveToScreen(QWindow *window, int screen)
@@ -386,7 +375,7 @@ QPlatformNativeInterface * QXcbIntegration::nativeInterface() const
#ifndef QT_NO_CLIPBOARD
QPlatformClipboard *QXcbIntegration::clipboard() const
{
- return m_connections.at(0)->clipboard();
+ return m_connection->clipboard();
}
#endif
@@ -402,7 +391,7 @@ QPlatformDrag *QXcbIntegration::drag() const
return simpleDrag;
}
- return m_connections.at(0)->drag();
+ return m_connection->drag();
}
#endif
@@ -433,12 +422,12 @@ QPlatformServices *QXcbIntegration::services() const
Qt::KeyboardModifiers QXcbIntegration::queryKeyboardModifiers() const
{
- return m_connections.at(0)->queryKeyboardModifiers();
+ return m_connection->queryKeyboardModifiers();
}
QList<int> QXcbIntegration::possibleKeys(const QKeyEvent *e) const
{
- return m_connections.at(0)->keyboard()->possibleKeys(e);
+ return m_connection->keyboard()->possibleKeys(e);
}
QStringList QXcbIntegration::themeNames() const
@@ -469,7 +458,7 @@ QVariant QXcbIntegration::styleHint(QPlatformIntegration::StyleHint hint) const
// The default (in QPlatformTheme::defaultThemeHint) is 10 pixels, but
// on a high-resolution screen it makes sense to increase it.
qreal dpi = 100.0;
- if (const QXcbScreen *screen = defaultConnection()->primaryScreen()) {
+ if (const QXcbScreen *screen = connection()->primaryScreen()) {
if (screen->logicalDpi().first > dpi)
dpi = screen->logicalDpi().first;
if (screen->logicalDpi().second > dpi)
@@ -540,9 +529,7 @@ QPlatformSessionManager *QXcbIntegration::createPlatformSessionManager(const QSt
void QXcbIntegration::sync()
{
- for (int i = 0; i < m_connections.size(); i++) {
- m_connections.at(i)->sync();
- }
+ m_connection->sync();
}
// For QApplication::beep()