From 6787fe8933b54f9e68f123df457e502dee9be13a Mon Sep 17 00:00:00 2001 From: UjinT34 <41110182+UjinT34@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:56:37 +0300 Subject: protocols: Support wp color management proto (#9444) Adds support for the recently merged w-p CM protocol alongside the (now deprecated) old CM WIP protocols --- src/managers/ProtocolManager.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/managers/ProtocolManager.cpp') diff --git a/src/managers/ProtocolManager.cpp b/src/managers/ProtocolManager.cpp index 6474d661..5e548c9f 100644 --- a/src/managers/ProtocolManager.cpp +++ b/src/managers/ProtocolManager.cpp @@ -57,6 +57,7 @@ #include "../protocols/core/Output.hpp" #include "../protocols/core/Shm.hpp" #include "../protocols/ColorManagement.hpp" +#include "../protocols/XXColorManagement.hpp" #include "../protocols/FrogColorManagement.hpp" #include "../protocols/ContentType.hpp" @@ -83,14 +84,17 @@ void CProtocolManager::onMonitorModeChange(PHLMONITOR pMonitor) { PROTO::outputs.emplace(pMonitor->szName, makeShared(&wl_output_interface, 4, std::format("WLOutput ({})", pMonitor->szName), pMonitor->self.lock())); } - if (PROTO::colorManagement && g_pCompositor->shouldChangePreferredImageDescription()) - PROTO::colorManagement->onImagePreferredChanged(); + if (PROTO::colorManagement && g_pCompositor->shouldChangePreferredImageDescription()) { + Debug::log(ERR, "FIXME: color management protocol is enabled, need a preferred image description id"); + PROTO::colorManagement->onImagePreferredChanged(0); + } } CProtocolManager::CProtocolManager() { static const auto PENABLEEXPLICIT = CConfigValue("render:explicit_sync"); static const auto PENABLEXXCM = CConfigValue("experimental:xx_color_management_v4"); + static const auto PDEBUGCM = CConfigValue("debug:full_cm_proto"); // Outputs are a bit dumb, we have to agree. static auto P = g_pHookSystem->hookDynamic("monitorAdded", [this](void* self, SCallbackInfo& info, std::any param) { @@ -172,9 +176,10 @@ CProtocolManager::CProtocolManager() { PROTO::ctm = makeUnique(&hyprland_ctm_control_manager_v1_interface, 2, "CTMControl"); PROTO::hyprlandSurface = makeUnique(&hyprland_surface_manager_v1_interface, 2, "HyprlandSurface"); PROTO::contentType = makeUnique(&wp_content_type_manager_v1_interface, 1, "ContentType"); + PROTO::colorManagement = makeUnique(&wp_color_manager_v1_interface, 1, "ColorManagement", *PDEBUGCM); if (*PENABLEXXCM) { - PROTO::colorManagement = makeUnique(&xx_color_manager_v4_interface, 1, "ColorManagement"); + PROTO::xxColorManagement = makeUnique(&xx_color_manager_v4_interface, 1, "XXColorManagement"); PROTO::frogColorManagement = makeUnique(&frog_color_management_factory_v1_interface, 1, "FrogColorManagement"); } -- cgit v1.2.3