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()
|
||||
: m_shutdownTimer(new QTimer(this))
|
||||
{
|
||||
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"));
|
||||
|
||||
m_shutdownTimer->setSingleShot(true);
|
||||
connect(m_shutdownTimer, &QTimer::timeout, this, &BreezyDesktopEffect::realDeactivate);
|
||||
|
||||
setupGlobalShortcut(
|
||||
BreezyShortcuts::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) {
|
||||
QAction *action = new QAction(this);
|
||||
action->setObjectName(shortcut.actionName);
|
||||
|
|
@ -241,10 +254,6 @@ void BreezyDesktopEffect::activate()
|
|||
|
||||
void BreezyDesktopEffect::deactivate()
|
||||
{
|
||||
if (m_shutdownTimer->isActive()) {
|
||||
return;
|
||||
}
|
||||
|
||||
qCCritical(KWIN_XR) << "\t\t\tBreezy - deactivate";
|
||||
disconnect(effects, &EffectsHandler::cursorShapeChanged, this, &BreezyDesktopEffect::updateCursorImage);
|
||||
m_cursorUpdateTimer->stop();
|
||||
|
|
@ -255,9 +264,7 @@ void BreezyDesktopEffect::deactivate()
|
|||
}
|
||||
m_virtualOutputs.clear();
|
||||
|
||||
// this triggers realDeactivate with a delay so if it's triggered from QML it gives the QML function time to
|
||||
// exit, avoiding a crash
|
||||
m_shutdownTimer->start(250);
|
||||
setRunning(false);
|
||||
}
|
||||
|
||||
void BreezyDesktopEffect::enableDriver()
|
||||
|
|
@ -270,12 +277,6 @@ void BreezyDesktopEffect::enableDriver()
|
|||
XRDriverIPC::instance().writeConfig(obj);
|
||||
}
|
||||
|
||||
void BreezyDesktopEffect::realDeactivate()
|
||||
{
|
||||
qCCritical(KWIN_XR) << "\t\t\tBreezy - realDeactivate";
|
||||
setRunning(false);
|
||||
}
|
||||
|
||||
void BreezyDesktopEffect::addVirtualDisplay(QSize size)
|
||||
{
|
||||
// QSize size(2560, 1440);
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ namespace KWin
|
|||
public:
|
||||
|
||||
BreezyDesktopEffect();
|
||||
~BreezyDesktopEffect() override;
|
||||
|
||||
void reconfigure(ReconfigureFlags) override;
|
||||
|
||||
|
|
@ -101,13 +102,12 @@ namespace KWin
|
|||
QVariantMap initialProperties(Output *screen) override;
|
||||
|
||||
private:
|
||||
void realDeactivate();
|
||||
void teardown();
|
||||
bool checkParityByte(const char* data);
|
||||
void setupGlobalShortcut(const BreezyShortcuts::Shortcut &shortcut,
|
||||
std::function<void()> triggeredFunc);
|
||||
void recenter();
|
||||
|
||||
QTimer *m_shutdownTimer;
|
||||
QString m_cursorImageSource;
|
||||
QSize m_cursorImageSize;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue