From 0839f672135f8212fe4a6890252c8cbac5240a05 Mon Sep 17 00:00:00 2001 From: vaxerski Date: Sun, 18 Aug 2024 19:57:55 +0200 Subject: [PATCH] test --- include/aquamarine/backend/DRM.hpp | 2 ++ src/backend/drm/DRM.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/aquamarine/backend/DRM.hpp b/include/aquamarine/backend/DRM.hpp index 7a452e5..5103165 100644 --- a/include/aquamarine/backend/DRM.hpp +++ b/include/aquamarine/backend/DRM.hpp @@ -209,6 +209,8 @@ namespace Aquamarine { Hyprutils::Math::Vector2D cursorPos; // without hotspot Hyprutils::Math::Vector2D cursorHotspot; + bool enabledState = true; // actual enabled state. Should be synced with state->state().enabled after a new frame + private: CDRMOutput(const std::string& name_, Hyprutils::Memory::CWeakPointer backend_, Hyprutils::Memory::CSharedPointer connector_); diff --git a/src/backend/drm/DRM.cpp b/src/backend/drm/DRM.cpp index 0a5ba99..55fc283 100644 --- a/src/backend/drm/DRM.cpp +++ b/src/backend/drm/DRM.cpp @@ -818,7 +818,7 @@ static void handlePF(int fd, unsigned seq, unsigned tv_sec, unsigned tv_usec, un .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(); } @@ -1318,6 +1318,8 @@ void Aquamarine::SDRMConnector::applyCommit(const SDRMConnectorCommitData& data) if (output->state->state().committed & COutputState::AQ_OUTPUT_STATE_MODE) refresh = calculateRefresh(data.modeInfo); + + output->enabledState = output->state->state().enabled; } void Aquamarine::SDRMConnector::rollbackCommit(const SDRMConnectorCommitData& data) { @@ -1679,7 +1681,7 @@ void Aquamarine::CDRMOutput::scheduleFrame(const scheduleFrameReason reason) { connector->isPageFlipPending, connector->frameEventScheduled))); needsFrame = true; - if (connector->isPageFlipPending || connector->frameEventScheduled || !state->state().enabled) + if (connector->isPageFlipPending || connector->frameEventScheduled || !enabledState) return; connector->frameEventScheduled = true;