mirror of
https://github.com/hyprwm/Hyprland
synced 2024-12-22 20:29:48 +01:00
parent
598bbd186b
commit
22a86fd7a2
3 changed files with 13 additions and 1 deletions
|
@ -43,6 +43,7 @@ void CSessionLockManager::onNewSessionLock(SP<CSessionLock> pLock) {
|
|||
|
||||
if (PROTO::sessionLock->isLocked() && !*PALLOWRELOCK) {
|
||||
Debug::log(LOG, "Cannot re-lock, misc:allow_session_lock_restore is disabled");
|
||||
pLock->sendDenied();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -113,6 +113,11 @@ CSessionLock::CSessionLock(SP<CExtSessionLockV1> resource_) : resource(resource_
|
|||
});
|
||||
|
||||
resource->setUnlockAndDestroy([this](CExtSessionLockV1* r) {
|
||||
if (inert) {
|
||||
PROTO::sessionLock->destroyResource(this);
|
||||
return;
|
||||
}
|
||||
|
||||
events.unlockAndDestroy.emit();
|
||||
inert = true;
|
||||
PROTO::sessionLock->locked = false;
|
||||
|
@ -132,6 +137,11 @@ bool CSessionLock::good() {
|
|||
return resource->resource();
|
||||
}
|
||||
|
||||
void CSessionLock::sendDenied() {
|
||||
inert = true;
|
||||
resource->sendFinished();
|
||||
}
|
||||
|
||||
CSessionLockProtocol::CSessionLockProtocol(const wl_interface* iface, const int& ver, const std::string& name) : IWaylandProtocol(iface, ver, name) {
|
||||
;
|
||||
}
|
||||
|
@ -171,8 +181,8 @@ void CSessionLockProtocol::onLock(CExtSessionLockManagerV1* pMgr, uint32_t id) {
|
|||
|
||||
if (m_vLocks.size() > 1) {
|
||||
LOGM(ERR, "Tried to lock a locked session");
|
||||
RESOURCE->resource->sendFinished();
|
||||
RESOURCE->inert = true;
|
||||
RESOURCE->resource->sendFinished();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@ class CSessionLock {
|
|||
|
||||
bool good();
|
||||
void sendLocked();
|
||||
void sendDenied();
|
||||
|
||||
struct {
|
||||
CSignal newLockSurface; // SP<CSessionLockSurface>
|
||||
|
|
Loading…
Reference in a new issue