From 536e6ed5701a7cbec5de143d0bc9de0cbd43e75b Mon Sep 17 00:00:00 2001 From: vaxerski Date: Fri, 5 Jan 2024 15:46:53 +0100 Subject: [PATCH] screencopy: properly handle stream resume on all frame statuses fixes #162 --- src/portals/Screencopy.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/portals/Screencopy.cpp b/src/portals/Screencopy.cpp index f0f7a77..0ef56c2 100644 --- a/src/portals/Screencopy.cpp +++ b/src/portals/Screencopy.cpp @@ -751,6 +751,15 @@ static void pwStreamStateChange(void* data, pw_stream_state old, pw_stream_state PSTREAM->streamState = true; if (PSTREAM->pSession->sharingData.status == FRAME_NONE) g_pPortalManager->m_sPortals.screencopy->startFrameCopy(PSTREAM->pSession); + else { + if (PSTREAM->pSession->sharingData.frameCallback) + zwlr_screencopy_frame_v1_destroy(PSTREAM->pSession->sharingData.frameCallback); + if (PSTREAM->pSession->sharingData.windowFrameCallback) + hyprland_toplevel_export_frame_v1_destroy(PSTREAM->pSession->sharingData.windowFrameCallback); + PSTREAM->pSession->sharingData.windowFrameCallback = nullptr; + PSTREAM->pSession->sharingData.frameCallback = nullptr; + g_pPortalManager->m_sPortals.screencopy->startFrameCopy(PSTREAM->pSession); + } break; default: PSTREAM->streamState = false; break; }