diff options
author | Ilya Fedin <fedin-ilja2010@ya.ru> | 2023-03-28 01:16:56 +0400 |
---|---|---|
committer | Ilya Fedin <fedin-ilja2010@ya.ru> | 2023-04-03 19:45:49 +0400 |
commit | 2eb17abf4262b467140ed4262320bf60cbda3ba2 (patch) | |
tree | 4f6b4fcf76ef43560e967ac034e65167da23fc11 /src/client/qwaylandintegration.cpp | |
parent | b66d93c6b827ef2d194916c68f1f64fe874d5163 (diff) |
Client: Check for shell integration when initializing platform plugin
This makes QWaylandDisplay::initialize return a boolean and moves the
QWaylandIntegration's failure check out of constructor as
QWaylandIntegration::shellIntegration is a virtual method, this also
removes the out-of-date comments about processEvents as it's no more
used in QWaylandDisplay::forceRoundTrip.
Fixes: QTBUG-102457
Pick-to: 6.5
Change-Id: I3c8f1d9fd195326b587b45318443c2beee1ebfc2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Diffstat (limited to 'src/client/qwaylandintegration.cpp')
-rw-r--r-- | src/client/qwaylandintegration.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp index d4724545f..5d21e1c79 100644 --- a/src/client/qwaylandintegration.cpp +++ b/src/client/qwaylandintegration.cpp @@ -83,10 +83,6 @@ QWaylandIntegration::QWaylandIntegration() #endif { mDisplay.reset(new QWaylandDisplay(this)); - if (!mDisplay->isInitialized()) { - mFailed = true; - return; - } QWaylandWindow::fixedToplevelPositions = !qEnvironmentVariableIsSet("QT_WAYLAND_DISABLE_FIXED_POSITIONS"); @@ -99,6 +95,11 @@ QWaylandIntegration::~QWaylandIntegration() sInstance = nullptr; } +bool QWaylandIntegration::init() +{ + return mDisplay->initialize(); +} + QPlatformNativeInterface * QWaylandIntegration::nativeInterface() const { return mNativeInterface.data(); @@ -168,7 +169,7 @@ QPlatformNativeInterface *QWaylandIntegration::createPlatformNativeInterface() // Support platform specific initialization void QWaylandIntegration::initializePlatform() { - mDisplay->initialize(); + mDisplay->initEventThread(); mNativeInterface.reset(createPlatformNativeInterface()); initializeInputDeviceIntegration(); @@ -184,14 +185,9 @@ void QWaylandIntegration::initializePlatform() void QWaylandIntegration::initialize() { - mDisplay->initEventThread(); - - // Call this after initializing event thread for QWaylandDisplay::forceRoundTrip() initializePlatform(); - // But the aboutToBlock() and awake() should be connected after initializePlatform(). - // Otherwise the connected flushRequests() may consumes up all events before processEvents starts to wait, - // so that processEvents(QEventLoop::WaitForMoreEvents) may be blocked in the forceRoundTrip(). + // Call this after initializing event thread for QWaylandDisplay::flushRequests() QAbstractEventDispatcher *dispatcher = QGuiApplicationPrivate::eventDispatcher; QObject::connect(dispatcher, SIGNAL(aboutToBlock()), mDisplay.data(), SLOT(flushRequests())); QObject::connect(dispatcher, SIGNAL(awake()), mDisplay.data(), SLOT(flushRequests())); |