11#include "compositor.h"
20#include <KDecoration2/Decoration>
22#include <KWayland/Client/compositor.h>
23#include <KWayland/Client/connection_thread.h>
24#include <KWayland/Client/shm_pool.h>
25#include <KWayland/Client/surface.h>
32static const QString s_socketName = QStringLiteral(
"wayland_test_kwin_dont_crash_cancel_animation-0");
44void DontCrashCancelAnimationFromAnimationEndedTest::initTestCase()
46 qRegisterMetaType<KWin::Window *>();
49 QRect(0, 0, 1280, 1024),
50 QRect(1280, 0, 1280, 1024),
55 QVERIFY(compositorToggledSpy.wait());
59void DontCrashCancelAnimationFromAnimationEndedTest::init()
64void DontCrashCancelAnimationFromAnimationEndedTest::cleanup()
69void DontCrashCancelAnimationFromAnimationEndedTest::testScript()
72 ScriptedEffect *effect =
ScriptedEffect::create(QStringLiteral(
"crashy"), QFINDTESTDATA(
"data/anim-data-delete-effect/effect.js"), 10, QString());
75 const auto children =
effects->children();
76 for (
auto it = children.begin(); it != children.end(); ++it) {
77 if (qstrcmp((*it)->metaObject()->className(),
"KWin::EffectLoader") != 0) {
80 QVERIFY(QMetaObject::invokeMethod(*it,
"effectLoaded", Q_ARG(
KWin::Effect *, effect), Q_ARG(QString, QStringLiteral(
"crashy"))));
89 QVERIFY(shellSurface);
93 QCOMPARE(
workspace()->activeWindow(), window);
103 QVERIFY(windowDeletedSpy.wait());
111#include "dont_crash_cancel_animation.moc"
void compositingToggled(bool active)
static Compositor * self()
Base class for all KWin effects.
Q_SCRIPTABLE bool isEffectLoaded(const QString &name) const
static ScriptedEffect * create(const QString &effectName, const QString &pathToScript, int chainPosition, const QString &exclusiveCategory)
#define WAYLANDTEST_MAIN(TestObject)
Window * renderAndWaitForShown(KWayland::Client::Surface *surface, const QSize &size, const QColor &color, const QImage::Format &format=QImage::Format_ARGB32, int timeout=5000)
void destroyWaylandConnection()
void setOutputConfig(const QList< QRect > &geometries)
bool setupWaylandConnection(AdditionalWaylandInterfaces flags=AdditionalWaylandInterfaces())
std::unique_ptr< KWayland::Client::Surface > createSurface()
XdgToplevel * createXdgToplevelSurface(KWayland::Client::Surface *surface, QObject *parent=nullptr)
WaylandServer * waylandServer()