diff --git a/src/modules/capture/capture.cpp b/src/modules/capture/capture.cpp index d9dd6bf6a..9f29f40c0 100644 --- a/src/modules/capture/capture.cpp +++ b/src/modules/capture/capture.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2024 UnionTech Software Technology Co., Ltd. +// Copyright (C) 2024-2026 UnionTech Software Technology Co., Ltd. // SPDX-License-Identifier: Apache-2.0 OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include "capture.h" @@ -580,7 +580,10 @@ void CaptureSourceSelector::doneSelection() this, &CaptureSourceSelector::createImage); m_internalContentItem->setVisible(false); - m_canvas->surfaceItem()->setSubsurfacesVisible(false); + // m_canvas may be null when no mask surface exists (e.g. capture via + // xdg-desktop-portal without a mask). Guard against null dereference. + if (m_canvas && m_canvas->surfaceItem()) + m_canvas->surfaceItem()->setSubsurfacesVisible(false); } void CaptureSourceSelector::cancelSelection()