diff options
| author | Lee Bousfield <ljbousfield@gmail.com> | 2025-03-29 19:25:27 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-30 01:25:27 +0100 |
| commit | 86c279d7d0df9a6f2a78b47f3ca966272a9b9ee0 (patch) | |
| tree | e68766ce32a35c20df2bc737b8ef7cd8fd46ebf0 /src/protocols | |
| parent | 46b00a4a861370e2ba560732df6f0783cf5cf9b5 (diff) | |
protocols: Don't update hdr metadata if image description is unchanged (#9776)
Diffstat (limited to 'src/protocols')
| -rw-r--r-- | src/protocols/ColorManagement.cpp | 9 | ||||
| -rw-r--r-- | src/protocols/ColorManagement.hpp | 1 | ||||
| -rw-r--r-- | src/protocols/XXColorManagement.cpp | 2 |
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"); }); |
