aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2026-07-25 11:17:38 +0200
committerdec05eba <dec05eba@protonmail.com>2026-07-25 11:17:38 +0200
commit2dc366550605df3170c1830647b6a02c6ce47828 (patch)
tree1962b4bd530ab377b438ce9ad0b12f9388a0a08c /src
parent8dcf40270d142bbdab77f91640d3a78009d8f936 (diff)
pipewire video: show precise warning when dma buf capture fails
Diffstat (limited to 'src')
-rw-r--r--src/pipewire_video.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/pipewire_video.c b/src/pipewire_video.c
index 547b417..18f6c9a 100644
--- a/src/pipewire_video.c
+++ b/src/pipewire_video.c
@@ -382,6 +382,12 @@ static void on_state_changed_cb(void *user_data, enum pw_stream_state prev_state
(void*)self->stream, pw_stream_state_as_string(prev_state), pw_stream_state_as_string(new_state),
error ? error : "none");
+ if(new_state == PW_STREAM_STATE_ERROR && error && strstr(error, "alloc buffers")) {
+ fprintf(stderr, "gsr error: pipewire: the desktop portal failed to provide dmabuf (GPU) video frames. This happens when the "
+ "compositor only provides the frames as shared memory (CPU), which gpu-screen-recorder intentionally doesn't support for portal capture. "
+ "Capture the monitor directly (for example '-w screen' or '-w <monitor-name>', see 'gpu-screen-recorder --list-capture-options') instead of '-w portal'.\n");
+ }
+
pthread_mutex_lock(&self->mutex);
if(new_state == PW_STREAM_STATE_PAUSED) {
self->paused_start_secs = clock_get_monotonic_seconds();