Attempt to fix a crash on glasses disconnect
This commit is contained in:
parent
cd3e3eaaa7
commit
e3af8057c7
|
|
@ -310,6 +310,10 @@ void BreezyDesktopEffect::activate()
|
||||||
void BreezyDesktopEffect::deactivate()
|
void BreezyDesktopEffect::deactivate()
|
||||||
{
|
{
|
||||||
qCCritical(KWIN_XR) << "\t\t\tBreezy - deactivate";
|
qCCritical(KWIN_XR) << "\t\t\tBreezy - deactivate";
|
||||||
|
|
||||||
|
m_effectTargetScreenIndex = -1;
|
||||||
|
invalidateEffectOnScreenGeometryCache();
|
||||||
|
|
||||||
disconnect(effects, &EffectsHandler::cursorShapeChanged, this, &BreezyDesktopEffect::updateCursorImage);
|
disconnect(effects, &EffectsHandler::cursorShapeChanged, this, &BreezyDesktopEffect::updateCursorImage);
|
||||||
m_cursorUpdateTimer->stop();
|
m_cursorUpdateTimer->stop();
|
||||||
showCursor();
|
showCursor();
|
||||||
|
|
@ -894,9 +898,16 @@ bool BreezyDesktopEffect::updateEffectOnScreenGeometryCache()
|
||||||
if (m_effectTargetScreenIndex == -1)
|
if (m_effectTargetScreenIndex == -1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Output *effectOnScreen = effects->screens().at(m_effectTargetScreenIndex);
|
const auto screensList = effects->screens();
|
||||||
if (!effectOnScreen)
|
if (m_effectTargetScreenIndex >= screensList.count()) {
|
||||||
|
m_effectTargetScreenIndex = -1;
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
Output *effectOnScreen = screensList.at(m_effectTargetScreenIndex);
|
||||||
|
if (!effectOnScreen) {
|
||||||
|
m_effectTargetScreenIndex = -1;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const QRect geometry = effectOnScreen->geometry();
|
const QRect geometry = effectOnScreen->geometry();
|
||||||
const int marginX = (m_cursorImageSize.width() > 0) ? m_cursorImageSize.width() : 10;
|
const int marginX = (m_cursorImageSize.width() > 0) ? m_cursorImageSize.width() : 10;
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,10 @@ Item {
|
||||||
if (targetScreenSupported) effect.effectTargetScreenIndex = KWinComponents.Workspace.screens.indexOf(targetScreen);
|
if (targetScreenSupported) effect.effectTargetScreenIndex = KWinComponents.Workspace.screens.indexOf(targetScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onScreensChanged: {
|
||||||
|
checkLoadedComponent();
|
||||||
|
}
|
||||||
|
|
||||||
onImuResetStateChanged: {
|
onImuResetStateChanged: {
|
||||||
checkLoadedComponent();
|
checkLoadedComponent();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue