diff options
Diffstat (limited to 'src/protocols/ColorManagement.cpp')
| -rw-r--r-- | src/protocols/ColorManagement.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/protocols/ColorManagement.cpp b/src/protocols/ColorManagement.cpp index ada121a7..502fbe45 100644 --- a/src/protocols/ColorManagement.cpp +++ b/src/protocols/ColorManagement.cpp @@ -362,6 +362,11 @@ CColorManagementFeedbackSurface::CColorManagementFeedbackSurface(SP<CWpColorMana m_resource->setGetPreferred([this](CWpColorManagementSurfaceFeedbackV1* r, uint32_t id) { LOGM(TRACE, "Get preferred for id {}", id); + if (m_surface.expired()) { + r->error(WP_COLOR_MANAGEMENT_SURFACE_FEEDBACK_V1_ERROR_INERT, "Surface is inert"); + return; + } + if (m_currentPreferred.valid()) PROTO::colorManagement->destroyResource(m_currentPreferred.get()); @@ -377,15 +382,15 @@ CColorManagementFeedbackSurface::CColorManagementFeedbackSurface(SP<CWpColorMana RESOURCE->m_self = RESOURCE; m_currentPreferred = RESOURCE; - m_currentPreferred->m_settings = g_pCompositor->getPreferredImageDescription(); + m_currentPreferred->m_settings = m_surface->getPreferredImageDescription(); RESOURCE->resource()->sendReady(m_currentPreferred->m_settings.updateId()); }); m_resource->setGetPreferredParametric([this](CWpColorManagementSurfaceFeedbackV1* r, uint32_t id) { LOGM(TRACE, "Get preferred for id {}", id); - if (!PROTO::colorManagement->m_debug) { - r->error(WP_COLOR_MANAGER_V1_ERROR_UNSUPPORTED_FEATURE, "Parametric descriptions are not supported"); + if (m_surface.expired()) { + r->error(WP_COLOR_MANAGEMENT_SURFACE_FEEDBACK_V1_ERROR_INERT, "Surface is inert"); return; } @@ -404,7 +409,7 @@ CColorManagementFeedbackSurface::CColorManagementFeedbackSurface(SP<CWpColorMana RESOURCE->m_self = RESOURCE; m_currentPreferred = RESOURCE; - m_currentPreferred->m_settings = g_pCompositor->getPreferredImageDescription(); + m_currentPreferred->m_settings = m_surface->getPreferredImageDescription(); if (!PROTO::colorManagement->m_debug && m_currentPreferred->m_settings.icc.fd) { LOGM(ERR, "FIXME: parse icc profile"); r->error(WP_COLOR_MANAGER_V1_ERROR_UNSUPPORTED_FEATURE, "ICC profiles are not supported"); |
