summaryrefslogtreecommitdiff
path: root/src/protocols/core
diff options
context:
space:
mode:
authorUjinT34 <41110182+UjinT34@users.noreply.github.com>2025-08-29 14:31:07 +0300
committerGitHub <noreply@github.com>2025-08-29 13:31:07 +0200
commit05a1c0aa7395d19213e587c83089ecbd7b92085c (patch)
tree32a26c919feddafaf9e91c1c6274515622be39d3 /src/protocols/core
parent790e544689e7f7a906ee291a6715bc6833b15606 (diff)
renderer: Fix CM for DS and SDR passthrough (#11503)
Diffstat (limited to 'src/protocols/core')
-rw-r--r--src/protocols/core/Compositor.cpp4
-rw-r--r--src/protocols/core/Compositor.hpp1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/protocols/core/Compositor.cpp b/src/protocols/core/Compositor.cpp
index a859148f..484df21f 100644
--- a/src/protocols/core/Compositor.cpp
+++ b/src/protocols/core/Compositor.cpp
@@ -423,6 +423,10 @@ SP<CWLSurfaceResource> CWLSurfaceResource::findFirstPreorder(std::function<bool(
return findFirstPreorderHelper(m_self.lock(), fn);
}
+SP<CWLSurfaceResource> CWLSurfaceResource::findWithCM() {
+ return findFirstPreorder([this](SP<CWLSurfaceResource> surf) { return surf->m_colorManagement.valid() && surf->extends() == extends(); });
+}
+
std::pair<SP<CWLSurfaceResource>, Vector2D> CWLSurfaceResource::at(const Vector2D& localCoords, bool allowsInput) {
std::vector<std::pair<SP<CWLSurfaceResource>, Vector2D>> surfs;
breadthfirst([&surfs](SP<CWLSurfaceResource> surf, const Vector2D& offset, void* data) { surfs.emplace_back(std::make_pair<>(surf, offset)); }, &surfs);
diff --git a/src/protocols/core/Compositor.hpp b/src/protocols/core/Compositor.hpp
index 5a69deb6..0eff3f08 100644
--- a/src/protocols/core/Compositor.hpp
+++ b/src/protocols/core/Compositor.hpp
@@ -108,6 +108,7 @@ class CWLSurfaceResource {
void breadthfirst(std::function<void(SP<CWLSurfaceResource>, const Vector2D&, void*)> fn, void* data);
SP<CWLSurfaceResource> findFirstPreorder(std::function<bool(SP<CWLSurfaceResource>)> fn);
+ SP<CWLSurfaceResource> findWithCM();
void presentFeedback(const Time::steady_tp& when, PHLMONITOR pMonitor, bool discarded = false);
void commitState(SSurfaceState& state);
NColorManagement::SImageDescription getPreferredImageDescription();