https://bugs.kde.org/show_bug.cgi?id=516848

Noah Davis <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Latest Commit|                            |https://invent.kde.org/plas
                   |                            |ma/spectacle/-/commit/7dd8f
                   |                            |49ad555428eea695c5bfebd806a
                   |                            |72c9c7c0
         Resolution|---                         |FIXED
             Status|ASSIGNED                    |RESOLVED

--- Comment #6 from Noah Davis <[email protected]> ---
Git commit 7dd8f49ad555428eea695c5bfebd806a72c9c7c0 by Noah Davis, on behalf of
Zhora Zmeykin.
Committed on 30/09/2026 at 11:42.
Pushed by ndavis into branch 'master'.

Prevent premature exit during recording startup

I encountered this issue mostly in a VM. It appears to be a race between the
application lifecycle and asynchronous operations. I addressed it by adding a
separate `QEventLoopLocker`.

During testing, I added debug logging with `qWarning()` to
`SpectacleCore::startRecording()`, `VideoPlatformWayland::selectAndRecord()`,
`QCoreApplication::aboutToQuit`, `ScreencastingStream::created`, and
`PipeWireRecord::stateChanged`. This produced the following log:

```text
0.000 startRecording Screen captureWindows 1
0.000 hiding capture windows
0.002 calling VideoPlatform::startRecording
0.002 requesting KWin screen selection
1.115 KWin selection reply valid
1.115 selected screen "Virtual-1"
1.115 screencasting stream object created; awaiting created/failed signal
1.190 QCoreApplication::aboutToQuit
1.227 PipeWireRecord::stateChanged ... Idle
```

The `ScreencastingStream::created` signal is never emitted, the application
does not reach the `Recording` state, and no recording file is created.

After adding `QEventLoopLocker`:

```text
0.000 startRecording Screen captureWindows 1
0.000 installing QEventLoopLocker
0.000 hiding capture windows
0.002 calling VideoPlatform::startRecording
0.002 requesting KWin screen selection
1.336 KWin selection reply valid
1.336 selected screen "Virtual-1"
1.337 screencasting stream object created; awaiting created/failed signal
1.364 ScreencastingStream::created 61
1.515 PipeWireRecord::stateChanged ... Recording
```

With this change, the recording reached the `Recording` state and the video was
recorded successfully.

M  +9    -2    src/SpectacleCore.cpp
M  +1    -0    src/SpectacleCore.h

https://invent.kde.org/plasma/spectacle/-/commit/7dd8f49ad555428eea695c5bfebd806a72c9c7c0

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to