summaryrefslogtreecommitdiff
path: root/src/protocols
diff options
context:
space:
mode:
authorLee Bousfield <ljbousfield@gmail.com>2025-03-29 19:25:27 -0500
committerGitHub <noreply@github.com>2025-03-30 01:25:27 +0100
commit86c279d7d0df9a6f2a78b47f3ca966272a9b9ee0 (patch)
treee68766ce32a35c20df2bc737b8ef7cd8fd46ebf0 /src/protocols
parent46b00a4a861370e2ba560732df6f0783cf5cf9b5 (diff)
protocols: Don't update hdr metadata if image description is unchanged (#9776)
Diffstat (limited to 'src/protocols')
-rw-r--r--src/protocols/ColorManagement.cpp9
-rw-r--r--src/protocols/ColorManagement.hpp1
-rw-r--r--src/protocols/XXColorManagement.cpp2
3 files changed, 9 insertions, 3 deletions
diff --git a/src/protocols/ColorManagement.cpp b/src/protocols/ColorManagement.cpp
index b6aee17b..91dc0eac 100644
--- a/src/protocols/ColorManagement.cpp
+++ b/src/protocols/ColorManagement.cpp
@@ -331,11 +331,16 @@ const hdr_output_metadata& CColorManagementSurface::hdrMetadata() {
}
void CColorManagementSurface::setHDRMetadata(const hdr_output_metadata& metadata) {
- m_hdrMetadata = metadata;
- m_needsNewMetadata = false;
+ m_hdrMetadata = metadata;
+ m_lastImageDescription = m_imageDescription;
+ m_needsNewMetadata = false;
}
bool CColorManagementSurface::needsHdrMetadataUpdate() {
+ if (!m_needsNewMetadata)
+ return false;
+ if (m_imageDescription == m_lastImageDescription)
+ m_needsNewMetadata = false;
return m_needsNewMetadata;
}
diff --git a/src/protocols/ColorManagement.hpp b/src/protocols/ColorManagement.hpp
index 55219b8f..5a94920d 100644
--- a/src/protocols/ColorManagement.hpp
+++ b/src/protocols/ColorManagement.hpp
@@ -65,6 +65,7 @@ class CColorManagementSurface {
SP<CWpColorManagementSurfaceV1> m_resource;
wl_client* pClient = nullptr;
NColorManagement::SImageDescription m_imageDescription;
+ NColorManagement::SImageDescription m_lastImageDescription;
bool m_hasImageDescription = false;
bool m_needsNewMetadata = false;
hdr_output_metadata m_hdrMetadata;
diff --git a/src/protocols/XXColorManagement.cpp b/src/protocols/XXColorManagement.cpp
index 056a2cef..8231ec22 100644
--- a/src/protocols/XXColorManagement.cpp
+++ b/src/protocols/XXColorManagement.cpp
@@ -245,8 +245,8 @@ CXXColorManagementSurface::CXXColorManagementSurface(SP<CXxColorManagementSurfac
}
if (surface.valid()) {
- surface->colorManagement->setHasImageDescription(true);
surface->colorManagement->m_imageDescription = imageDescription->get()->settings;
+ surface->colorManagement->setHasImageDescription(true);
} else
LOGM(ERR, "Set image description for invalid surface");
});