dispatchers: fixup dpms toggle (#7875)

now toggles every monitor individually
This commit is contained in:
Kamikadze 2024-09-26 04:08:50 +05:00 committed by GitHub
parent 22746b3046
commit b1ad2d8066
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2403,9 +2403,7 @@ SDispatchResult CKeybindManager::dpms(std::string arg) {
bool enable = arg.starts_with("on");
std::string port = "";
if (arg.starts_with("toggle"))
enable = !std::any_of(g_pCompositor->m_vMonitors.begin(), g_pCompositor->m_vMonitors.end(), [&](const auto& other) { return !other->dpmsStatus; }); // enable if any is off
bool isToggle = arg.starts_with("toggle");
if (arg.find_first_of(' ') != std::string::npos)
port = arg.substr(arg.find_first_of(' ') + 1);
@ -2414,6 +2412,9 @@ SDispatchResult CKeybindManager::dpms(std::string arg) {
if (!port.empty() && m->szName != port)
continue;
if (isToggle)
enable = !m->dpmsStatus;
m->output->state->resetExplicitFences();
m->output->state->setEnabled(enable);