Commit c6b085f5 authored by Martin Flöser's avatar Martin Flöser
Browse files

[client] Track all created ConnectionThreads and add API to access them

Summary:
This is change needed by KWin. KWin has the problem that it destroys its
internal Wayland connection (KWin as client for KWin as server) before
shutting down the application. Other external libraries loaded into KWin
(e.g. breeze window decoration) are unloaded later on, then try to clean
up their Wayland resources and crash KWin due to accessing a no longer
valid Wayland connection.

With the help of this new API KWin can access all connections during
the clean up and destroy them before shutting down the Wayland server and
thus exit cleanly.

Reviewers: #frameworks, #plasma, #kwin

Subscribers: plasma-devel

Tags: #plasma_on_wayland, #frameworks

Differential Revision: https://phabricator.kde.org/D6569
parent dd873cb9
......@@ -78,7 +78,9 @@ void TestWaylandConnectionThread::cleanup()
void TestWaylandConnectionThread::testInitConnectionNoThread()
{
QVERIFY(KWayland::Client::ConnectionThread::connections().isEmpty());
QScopedPointer<KWayland::Client::ConnectionThread> connection(new KWayland::Client::ConnectionThread);
QVERIFY(KWayland::Client::ConnectionThread::connections().contains(connection.data()));
QCOMPARE(connection->socketName(), QStringLiteral("wayland-0"));
connection->setSocketName(s_socketName);
QCOMPARE(connection->socketName(), s_socketName);
......@@ -90,6 +92,9 @@ void TestWaylandConnectionThread::testInitConnectionNoThread()
QCOMPARE(connectedSpy.count(), 1);
QCOMPARE(failedSpy.count(), 0);
QVERIFY(connection->display());
connection.reset();
QVERIFY(KWayland::Client::ConnectionThread::connections().isEmpty());
}
void TestWaylandConnectionThread::testConnectionFailure()
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment