diff options
| author | UjinT34 <41110182+UjinT34@users.noreply.github.com> | 2025-10-04 01:35:22 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-04 00:35:22 +0200 |
| commit | 76d998743ac10e712238c1016db4d8e8d16f1049 (patch) | |
| tree | a35c4b58afa42c46232bfcf6db7ddf1fde00665d /src/protocols/ColorManagement.cpp | |
| parent | b7ef892ecf9c07e742239102056da950ebb42eee (diff) | |
cm: handle inert cm outputs (#11916)
Diffstat (limited to 'src/protocols/ColorManagement.cpp')
| -rw-r--r-- | src/protocols/ColorManagement.cpp | 24 |
1 files changed, 6 insertions, 18 deletions
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<CWpColorManagerV1> 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<CColorManagementOutput>(makeShared<CWpColorManagementOutputV1>(r->client(), r->version(), id), PMONITOR)); + const auto RESOURCE = PROTO::colorManagement->m_outputs.emplace_back( + makeShared<CColorManagementOutput>(makeShared<CWpColorManagementOutputV1>(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<CWpColorManagementOutputV1> resource, WP<CMonitor> monitor) : m_resource(resource), m_monitor(monitor) { +CColorManagementOutput::CColorManagementOutput(SP<CWpColorManagementOutputV1> resource, WP<CWLOutputResource> output) : m_resource(resource), m_output(output) { if UNLIKELY (!good()) return; @@ -231,10 +219,10 @@ CColorManagementOutput::CColorManagementOutput(SP<CWpColorManagementOutputV1> 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<CMonitor> 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 |
