diff --git a/src/protocols/ColorManagement.cpp b/src/protocols/ColorManagement.cpp index 7309cf71..408ade4d 100644 --- a/src/protocols/ColorManagement.cpp +++ b/src/protocols/ColorManagement.cpp @@ -68,20 +68,8 @@ CColorManager::CColorManager(SP resource) : m_resource(resour const auto OUTPUTRESOURCE = CWLOutputResource::fromResource(output); - if UNLIKELY (!OUTPUTRESOURCE) { - r->error(-1, "Invalid output (2)"); - return; - } - - const auto PMONITOR = OUTPUTRESOURCE->m_monitor.lock(); - - if UNLIKELY (!PMONITOR) { - r->error(-1, "Invalid output (2)"); - return; - } - - const auto RESOURCE = - PROTO::colorManagement->m_outputs.emplace_back(makeShared(makeShared(r->client(), r->version(), id), PMONITOR)); + const auto RESOURCE = PROTO::colorManagement->m_outputs.emplace_back( + makeShared(makeShared(r->client(), r->version(), id), OUTPUTRESOURCE)); if UNLIKELY (!RESOURCE->good()) { r->noMemory(); @@ -206,7 +194,7 @@ wl_client* CColorManager::client() { return m_resource->client(); } -CColorManagementOutput::CColorManagementOutput(SP resource, WP monitor) : m_resource(resource), m_monitor(monitor) { +CColorManagementOutput::CColorManagementOutput(SP resource, WP output) : m_resource(resource), m_output(output) { if UNLIKELY (!good()) return; @@ -231,10 +219,10 @@ CColorManagementOutput::CColorManagementOutput(SP re } RESOURCE->m_self = RESOURCE; - if (!m_monitor.valid()) + if (!m_output || !m_output->m_monitor.valid()) RESOURCE->m_resource->sendFailed(WP_IMAGE_DESCRIPTION_V1_CAUSE_NO_OUTPUT, "No output"); else { - RESOURCE->m_settings = m_monitor->m_imageDescription; + RESOURCE->m_settings = m_output->m_monitor->m_imageDescription; RESOURCE->m_resource->sendReady(RESOURCE->m_settings.updateId()); } }); @@ -805,7 +793,7 @@ void CColorManagementProtocol::onImagePreferredChanged(uint32_t preferredId) { void CColorManagementProtocol::onMonitorImageDescriptionChanged(WP monitor) { for (auto const& output : m_outputs) { - if (output->m_monitor == monitor) + if (output->m_output && output->m_output->m_monitor == monitor) output->m_resource->sendImageDescriptionChanged(); } // recheck feedbacks diff --git a/src/protocols/ColorManagement.hpp b/src/protocols/ColorManagement.hpp index 15762530..dea9f74c 100644 --- a/src/protocols/ColorManagement.hpp +++ b/src/protocols/ColorManagement.hpp @@ -27,7 +27,7 @@ class CColorManager { class CColorManagementOutput { public: - CColorManagementOutput(SP resource, WP monitor); + CColorManagementOutput(SP resource, WP output); bool good(); wl_client* client(); @@ -38,7 +38,7 @@ class CColorManagementOutput { private: SP m_resource; wl_client* m_client = nullptr; - WP m_monitor; + WP m_output; friend class CColorManagementProtocol; friend class CColorManagementImageDescription;