diff --git a/src/managers/ProtocolManager.cpp b/src/managers/ProtocolManager.cpp index 621a53359..992ace204 100644 --- a/src/managers/ProtocolManager.cpp +++ b/src/managers/ProtocolManager.cpp @@ -69,6 +69,11 @@ #include #include +// ******************************************************************************************** +// * IMPORTANT: make sure to .reset() any protocol UP's you create! (put reset in destructor) * +// * otherwise Hyprland might crash when exiting. * +// ******************************************************************************************** + void CProtocolManager::onMonitorModeChange(PHLMONITOR pMonitor) { const bool ISMIRROR = pMonitor->isMirror(); @@ -177,6 +182,7 @@ CProtocolManager::CProtocolManager() { 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); + // please read the top of this file before adding another protocol if (*PENABLEXXCM) { PROTO::xxColorManagement = makeUnique(&xx_color_manager_v4_interface, 1, "XXColorManagement"); @@ -257,6 +263,10 @@ CProtocolManager::~CProtocolManager() { PROTO::securityContext.reset(); PROTO::ctm.reset(); PROTO::hyprlandSurface.reset(); + PROTO::contentType.reset(); + PROTO::colorManagement.reset(); + PROTO::xxColorManagement.reset(); + PROTO::frogColorManagement.reset(); PROTO::lease.reset(); PROTO::sync.reset();