Fix issue where cursor doesn't reappear when disabling the KWin plugin
deactivate() wasn't getting triggered, add a deconstructor
This commit is contained in:
parent
229ee9749a
commit
8967c00666
|
|
@ -92,14 +92,10 @@ namespace KWin
|
||||||
{
|
{
|
||||||
|
|
||||||
BreezyDesktopEffect::BreezyDesktopEffect()
|
BreezyDesktopEffect::BreezyDesktopEffect()
|
||||||
: m_shutdownTimer(new QTimer(this))
|
|
||||||
{
|
{
|
||||||
qCCritical(KWIN_XR) << "\t\t\tBreezy - constructor";
|
qCCritical(KWIN_XR) << "\t\t\tBreezy - constructor";
|
||||||
qmlRegisterUncreatableType<BreezyDesktopEffect>("org.kde.kwin.effect.breezy_desktop", 1, 0, "BreezyDesktopEffect", QStringLiteral("BreezyDesktop cannot be created in QML"));
|
qmlRegisterUncreatableType<BreezyDesktopEffect>("org.kde.kwin.effect.breezy_desktop", 1, 0, "BreezyDesktopEffect", QStringLiteral("BreezyDesktop cannot be created in QML"));
|
||||||
|
|
||||||
m_shutdownTimer->setSingleShot(true);
|
|
||||||
connect(m_shutdownTimer, &QTimer::timeout, this, &BreezyDesktopEffect::realDeactivate);
|
|
||||||
|
|
||||||
setupGlobalShortcut(
|
setupGlobalShortcut(
|
||||||
BreezyShortcuts::TOGGLE,
|
BreezyShortcuts::TOGGLE,
|
||||||
[this]() { this->toggle(); }
|
[this]() { this->toggle(); }
|
||||||
|
|
@ -165,6 +161,23 @@ BreezyDesktopEffect::BreezyDesktopEffect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BreezyDesktopEffect::~BreezyDesktopEffect()
|
||||||
|
{
|
||||||
|
qCCritical(KWIN_XR) << "\t\t\tBreezy - destructor";
|
||||||
|
if (m_shmFileWatcher) {
|
||||||
|
if (!DataView::SHM_PATH.isEmpty()) {
|
||||||
|
m_shmFileWatcher->removePath(DataView::SHM_PATH);
|
||||||
|
}
|
||||||
|
m_shmFileWatcher->deleteLater();
|
||||||
|
m_shmFileWatcher = nullptr;
|
||||||
|
}
|
||||||
|
if (m_shmDirectoryWatcher) {
|
||||||
|
m_shmDirectoryWatcher->deleteLater();
|
||||||
|
m_shmDirectoryWatcher = nullptr;
|
||||||
|
}
|
||||||
|
deactivate();
|
||||||
|
}
|
||||||
|
|
||||||
void BreezyDesktopEffect::setupGlobalShortcut(const BreezyShortcuts::Shortcut &shortcut, std::function<void()> triggeredFunc) {
|
void BreezyDesktopEffect::setupGlobalShortcut(const BreezyShortcuts::Shortcut &shortcut, std::function<void()> triggeredFunc) {
|
||||||
QAction *action = new QAction(this);
|
QAction *action = new QAction(this);
|
||||||
action->setObjectName(shortcut.actionName);
|
action->setObjectName(shortcut.actionName);
|
||||||
|
|
@ -241,10 +254,6 @@ void BreezyDesktopEffect::activate()
|
||||||
|
|
||||||
void BreezyDesktopEffect::deactivate()
|
void BreezyDesktopEffect::deactivate()
|
||||||
{
|
{
|
||||||
if (m_shutdownTimer->isActive()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
qCCritical(KWIN_XR) << "\t\t\tBreezy - deactivate";
|
qCCritical(KWIN_XR) << "\t\t\tBreezy - deactivate";
|
||||||
disconnect(effects, &EffectsHandler::cursorShapeChanged, this, &BreezyDesktopEffect::updateCursorImage);
|
disconnect(effects, &EffectsHandler::cursorShapeChanged, this, &BreezyDesktopEffect::updateCursorImage);
|
||||||
m_cursorUpdateTimer->stop();
|
m_cursorUpdateTimer->stop();
|
||||||
|
|
@ -255,9 +264,7 @@ void BreezyDesktopEffect::deactivate()
|
||||||
}
|
}
|
||||||
m_virtualOutputs.clear();
|
m_virtualOutputs.clear();
|
||||||
|
|
||||||
// this triggers realDeactivate with a delay so if it's triggered from QML it gives the QML function time to
|
setRunning(false);
|
||||||
// exit, avoiding a crash
|
|
||||||
m_shutdownTimer->start(250);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BreezyDesktopEffect::enableDriver()
|
void BreezyDesktopEffect::enableDriver()
|
||||||
|
|
@ -270,12 +277,6 @@ void BreezyDesktopEffect::enableDriver()
|
||||||
XRDriverIPC::instance().writeConfig(obj);
|
XRDriverIPC::instance().writeConfig(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BreezyDesktopEffect::realDeactivate()
|
|
||||||
{
|
|
||||||
qCCritical(KWIN_XR) << "\t\t\tBreezy - realDeactivate";
|
|
||||||
setRunning(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BreezyDesktopEffect::addVirtualDisplay(QSize size)
|
void BreezyDesktopEffect::addVirtualDisplay(QSize size)
|
||||||
{
|
{
|
||||||
// QSize size(2560, 1440);
|
// QSize size(2560, 1440);
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ namespace KWin
|
||||||
public:
|
public:
|
||||||
|
|
||||||
BreezyDesktopEffect();
|
BreezyDesktopEffect();
|
||||||
|
~BreezyDesktopEffect() override;
|
||||||
|
|
||||||
void reconfigure(ReconfigureFlags) override;
|
void reconfigure(ReconfigureFlags) override;
|
||||||
|
|
||||||
|
|
@ -101,13 +102,12 @@ namespace KWin
|
||||||
QVariantMap initialProperties(Output *screen) override;
|
QVariantMap initialProperties(Output *screen) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void realDeactivate();
|
void teardown();
|
||||||
bool checkParityByte(const char* data);
|
bool checkParityByte(const char* data);
|
||||||
void setupGlobalShortcut(const BreezyShortcuts::Shortcut &shortcut,
|
void setupGlobalShortcut(const BreezyShortcuts::Shortcut &shortcut,
|
||||||
std::function<void()> triggeredFunc);
|
std::function<void()> triggeredFunc);
|
||||||
void recenter();
|
void recenter();
|
||||||
|
|
||||||
QTimer *m_shutdownTimer;
|
|
||||||
QString m_cursorImageSource;
|
QString m_cursorImageSource;
|
||||||
QSize m_cursorImageSize;
|
QSize m_cursorImageSize;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue