This commit is contained in:
Vaxry 2024-08-18 19:57:55 +02:00
parent 9a573abff7
commit 0839f67213
2 changed files with 6 additions and 2 deletions

View file

@ -209,6 +209,8 @@ namespace Aquamarine {
Hyprutils::Math::Vector2D cursorPos; // without hotspot Hyprutils::Math::Vector2D cursorPos; // without hotspot
Hyprutils::Math::Vector2D cursorHotspot; Hyprutils::Math::Vector2D cursorHotspot;
bool enabledState = true; // actual enabled state. Should be synced with state->state().enabled after a new frame
private: private:
CDRMOutput(const std::string& name_, Hyprutils::Memory::CWeakPointer<CDRMBackend> backend_, Hyprutils::Memory::CSharedPointer<SDRMConnector> connector_); CDRMOutput(const std::string& name_, Hyprutils::Memory::CWeakPointer<CDRMBackend> backend_, Hyprutils::Memory::CSharedPointer<SDRMConnector> connector_);

View file

@ -818,7 +818,7 @@ static void handlePF(int fd, unsigned seq, unsigned tv_sec, unsigned tv_usec, un
.flags = flags, .flags = flags,
}); });
if (BACKEND->sessionActive() && !pageFlip->connector->frameEventScheduled && pageFlip->connector->output->state->state().enabled) if (BACKEND->sessionActive() && !pageFlip->connector->frameEventScheduled && pageFlip->connector->output->enabledState)
pageFlip->connector->output->events.frame.emit(); pageFlip->connector->output->events.frame.emit();
} }
@ -1318,6 +1318,8 @@ void Aquamarine::SDRMConnector::applyCommit(const SDRMConnectorCommitData& data)
if (output->state->state().committed & COutputState::AQ_OUTPUT_STATE_MODE) if (output->state->state().committed & COutputState::AQ_OUTPUT_STATE_MODE)
refresh = calculateRefresh(data.modeInfo); refresh = calculateRefresh(data.modeInfo);
output->enabledState = output->state->state().enabled;
} }
void Aquamarine::SDRMConnector::rollbackCommit(const SDRMConnectorCommitData& data) { void Aquamarine::SDRMConnector::rollbackCommit(const SDRMConnectorCommitData& data) {
@ -1679,7 +1681,7 @@ void Aquamarine::CDRMOutput::scheduleFrame(const scheduleFrameReason reason) {
connector->isPageFlipPending, connector->frameEventScheduled))); connector->isPageFlipPending, connector->frameEventScheduled)));
needsFrame = true; needsFrame = true;
if (connector->isPageFlipPending || connector->frameEventScheduled || !state->state().enabled) if (connector->isPageFlipPending || connector->frameEventScheduled || !enabledState)
return; return;
connector->frameEventScheduled = true; connector->frameEventScheduled = true;