File indexing completed on 2024-04-14 03:56:52

0001 /*
0002     SPDX-FileCopyrightText: 2016 Martin Gräßlin <mgraesslin@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 #include <KWindowSystem>
0007 #include <QSignalSpy>
0008 #include <QTest>
0009 
0010 #include "kselectionowner.h"
0011 #include "kx11extras.h"
0012 
0013 class CompositingEnabledTest : public QObject
0014 {
0015     Q_OBJECT
0016 private Q_SLOTS:
0017     void testRecreatingNetEventFilter();
0018 };
0019 
0020 void CompositingEnabledTest::testRecreatingNetEventFilter()
0021 {
0022     // this test simulates the condition that the compositor gets enabled while the NetEventFilter gets recreated
0023     QVERIFY(!KX11Extras::compositingActive());
0024 
0025     // fake the compositor
0026     QSignalSpy compositingChangedSpy(KX11Extras::self(), &KX11Extras::compositingChanged);
0027     QVERIFY(compositingChangedSpy.isValid());
0028     KSelectionOwner compositorSelection("_NET_WM_CM_S0");
0029     QSignalSpy claimedSpy(&compositorSelection, &KSelectionOwner::claimedOwnership);
0030     QVERIFY(claimedSpy.isValid());
0031     compositorSelection.claim(true);
0032     connect(&compositorSelection, &KSelectionOwner::claimedOwnership, [] {
0033         // let's connect to a signal which will cause a re-creation of NetEventFilter
0034         QSignalSpy workAreaChangedSpy(KX11Extras::self(), &KX11Extras::workAreaChanged);
0035         QVERIFY(workAreaChangedSpy.isValid());
0036     });
0037 
0038     QVERIFY(claimedSpy.wait());
0039     QTRY_VERIFY(KX11Extras::compositingActive());
0040     QCOMPARE(compositingChangedSpy.count(), 1);
0041 }
0042 
0043 QTEST_MAIN(CompositingEnabledTest)
0044 #include "compositingenabled_test.moc"