idle-inhibit: enable idle inhibitor if no hl surface is associated (#5882)

This commit is contained in:
Sungyoon Cho 2024-05-05 22:04:40 +09:00 committed by GitHub
parent aaf35b9f1f
commit 03ebad3cbf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 5 deletions

View file

@ -17,8 +17,8 @@ void CInputManager::newIdleInhibitor(std::any inhibitor) {
auto WLSurface = CWLSurface::surfaceFromWlr(PINHIBIT->inhibitor->surface); auto WLSurface = CWLSurface::surfaceFromWlr(PINHIBIT->inhibitor->surface);
if (!WLSurface) { if (!WLSurface) {
Debug::log(LOG, "Inhibitor has no HL Surface attached to it, likely meaning it's a non-desktop element. Ignoring."); Debug::log(LOG, "Inhibitor has no HL Surface attached to it, likely meaning it's a non-desktop element. Assuming it's visible.");
PINHIBIT->inert = true; PINHIBIT->nonDesktop = true;
recheckIdleInhibitorStatus(); recheckIdleInhibitorStatus();
return; return;
} }
@ -32,8 +32,10 @@ void CInputManager::newIdleInhibitor(std::any inhibitor) {
void CInputManager::recheckIdleInhibitorStatus() { void CInputManager::recheckIdleInhibitorStatus() {
for (auto& ii : m_vIdleInhibitors) { for (auto& ii : m_vIdleInhibitors) {
if (ii->inert) if (ii->nonDesktop) {
continue; PROTO::idle->setInhibit(true);
return;
}
auto WLSurface = CWLSurface::surfaceFromWlr(ii->inhibitor->surface); auto WLSurface = CWLSurface::surfaceFromWlr(ii->inhibitor->surface);

View file

@ -242,7 +242,7 @@ class CInputManager {
// idle inhibitors // idle inhibitors
struct SIdleInhibitor { struct SIdleInhibitor {
std::shared_ptr<CIdleInhibitor> inhibitor; std::shared_ptr<CIdleInhibitor> inhibitor;
bool inert = false; bool nonDesktop = false;
CHyprSignalListener surfaceDestroyListener; CHyprSignalListener surfaceDestroyListener;
}; };
std::vector<std::unique_ptr<SIdleInhibitor>> m_vIdleInhibitors; std::vector<std::unique_ptr<SIdleInhibitor>> m_vIdleInhibitors;