diff --git a/backends/kwayland/waylandbackend.h b/backends/kwayland/waylandbackend.h --- a/backends/kwayland/waylandbackend.h +++ b/backends/kwayland/waylandbackend.h @@ -45,7 +45,6 @@ QByteArray edid(int outputId) const override; private: - bool m_isValid; WaylandConfig *m_internalConfig; }; diff --git a/backends/kwayland/waylandbackend.cpp b/backends/kwayland/waylandbackend.cpp --- a/backends/kwayland/waylandbackend.cpp +++ b/backends/kwayland/waylandbackend.cpp @@ -35,7 +35,6 @@ WaylandBackend::WaylandBackend() : KScreen::AbstractBackend() - , m_isValid(true) , m_internalConfig(new WaylandConfig(this)) { qCDebug(KSCREEN_WAYLAND) << "Loading Wayland backend."; @@ -81,5 +80,5 @@ bool WaylandBackend::isValid() const { - return m_isValid; + return m_internalConfig->isInitialized(); } diff --git a/backends/kwayland/waylandconfig.h b/backends/kwayland/waylandconfig.h --- a/backends/kwayland/waylandconfig.h +++ b/backends/kwayland/waylandconfig.h @@ -71,6 +71,8 @@ void applyConfig(const KScreen::ConfigPtr &newConfig); + bool isInitialized() const; + Q_SIGNALS: void configChanged(); void initialized(); diff --git a/backends/kwayland/waylandconfig.cpp b/backends/kwayland/waylandconfig.cpp --- a/backends/kwayland/waylandconfig.cpp +++ b/backends/kwayland/waylandconfig.cpp @@ -51,7 +51,7 @@ initKWinTabletMode(); connect(this, &WaylandConfig::initialized, &m_syncLoop, &QEventLoop::quit); - QTimer::singleShot(1000, this, [this] { + QTimer::singleShot(3000, this, [this] { if (m_syncLoop.isRunning()) { qCWarning(KSCREEN_WAYLAND) << "Connection to Wayland server at socket:" << m_connection->socketName() << "timed out."; @@ -255,10 +255,18 @@ } } +bool WaylandConfig::isInitialized() const +{ + return !m_blockSignals + && m_registryInitialized + && m_initializingOutputs.isEmpty() + && m_outputMap.count() > 0 + && m_outputManagement != nullptr; +} + void WaylandConfig::checkInitialized() { - if (!m_blockSignals && m_registryInitialized && - m_initializingOutputs.isEmpty() && m_outputMap.count() && m_outputManagement != nullptr) { + if (isInitialized()) { m_screen->setOutputs(m_outputMap.values()); Q_EMIT initialized(); }