summaryrefslogtreecommitdiff
path: root/src/protocols/ColorManagement.cpp
diff options
context:
space:
mode:
authorUjinT34 <41110182+UjinT34@users.noreply.github.com>2025-01-12 20:02:41 +0300
committerGitHub <noreply@github.com>2025-01-12 17:02:41 +0000
commita3a74993173662c06025ca633faa68b5590e2c5b (patch)
tree0a84ed7b9c8a45f4241de8f9729e8c189b41b024 /src/protocols/ColorManagement.cpp
parentb117fae3b493b9d5ac7ada3140cac555c3979dfd (diff)
renderer: Do not set hdr metadata unless needed (#9014)
Diffstat (limited to 'src/protocols/ColorManagement.cpp')
-rw-r--r--src/protocols/ColorManagement.cpp26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/protocols/ColorManagement.cpp b/src/protocols/ColorManagement.cpp
index 7ff4db4f..a76e13c0 100644
--- a/src/protocols/ColorManagement.cpp
+++ b/src/protocols/ColorManagement.cpp
@@ -194,13 +194,13 @@ CColorManagementSurface::CColorManagementSurface(SP<CXxColorManagementSurfaceV4>
return;
}
- m_hasImageDescription = true;
- m_imageDescription = imageDescription->get()->settings;
+ setHasImageDescription(true);
+ m_imageDescription = imageDescription->get()->settings;
});
resource->setUnsetImageDescription([this](CXxColorManagementSurfaceV4* r) {
LOGM(TRACE, "Unset image description for surface={}", (uintptr_t)r);
- m_imageDescription = SImageDescription{};
- m_hasImageDescription = false;
+ m_imageDescription = SImageDescription{};
+ setHasImageDescription(false);
});
}
@@ -222,6 +222,24 @@ bool CColorManagementSurface::hasImageDescription() {
return m_hasImageDescription;
}
+void CColorManagementSurface::setHasImageDescription(bool has) {
+ m_hasImageDescription = has;
+ m_needsNewMetadata = true;
+}
+
+const hdr_output_metadata& CColorManagementSurface::hdrMetadata() {
+ return m_hdrMetadata;
+}
+
+void CColorManagementSurface::setHDRMetadata(const hdr_output_metadata& metadata) {
+ m_hdrMetadata = metadata;
+ m_needsNewMetadata = false;
+}
+
+bool CColorManagementSurface::needsHdrMetadataUpdate() {
+ return m_needsNewMetadata;
+}
+
CColorManagementFeedbackSurface::CColorManagementFeedbackSurface(SP<CXxColorManagementFeedbackSurfaceV4> resource_, SP<CWLSurfaceResource> surface_) :
surface(surface_), resource(resource_) {
if (!good())