summaryrefslogtreecommitdiff
path: root/src/helpers/Monitor.cpp
diff options
context:
space:
mode:
authorPppp1116 <pcaiadoguerreiro@gmail.com>2026-04-03 13:27:57 +0100
committerVaxry <43317083+vaxerski@users.noreply.github.com>2026-04-04 08:26:24 -0400
commit2b9696eb7259fa16bfd1408694a26e2e06c969d1 (patch)
treef3b9d8f5e9298b47b0a5d29d525db286a5a68fb6 /src/helpers/Monitor.cpp
parent4c42269ce6c44af40ea63f048d67dc0b898c8213 (diff)
renderer: skip redundant render-path work
Diffstat (limited to 'src/helpers/Monitor.cpp')
-rw-r--r--src/helpers/Monitor.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp
index 39951028..6e88357e 100644
--- a/src/helpers/Monitor.cpp
+++ b/src/helpers/Monitor.cpp
@@ -1118,6 +1118,7 @@ void CMonitor::addDamage(const CBox& box) {
if (m_cursorZoom->value() != 1.f && g_pCompositor->getMonitorFromCursor() == m_self) {
m_damage.damageEntire();
g_pCompositor->scheduleFrameForMonitor(m_self.lock(), Aquamarine::IOutput::AQ_SCHEDULE_DAMAGE);
+ return;
}
if (m_damage.damage(box))
@@ -2419,7 +2420,7 @@ CMonitorState::CMonitorState(CMonitor* owner) : m_owner(owner) {
}
void CMonitorState::ensureBufferPresent() {
- const auto STATE = m_owner->m_output->state->state();
+ const auto& STATE = m_owner->m_output->state->state();
if (!STATE.enabled) {
Log::logger->log(Log::TRACE, "CMonitorState::ensureBufferPresent: Ignoring, monitor is not enabled");
return;
@@ -2459,13 +2460,18 @@ bool CMonitorState::test() {
}
bool CMonitorState::updateSwapchain() {
- auto options = m_owner->m_output->swapchain->currentOptions();
+ const auto& OPTIONS = m_owner->m_output->swapchain->currentOptions();
const auto& STATE = m_owner->m_output->state->state();
const auto& MODE = STATE.mode ? STATE.mode : STATE.customMode;
if (!MODE) {
Log::logger->log(Log::WARN, "updateSwapchain: No mode?");
return true;
}
+
+ if (OPTIONS.format == m_owner->m_drmFormat && OPTIONS.scanout && OPTIONS.length == 3 && OPTIONS.size == MODE->pixelSize)
+ return true;
+
+ auto options = OPTIONS;
options.format = m_owner->m_drmFormat;
options.scanout = true;
options.length = 3;