screen-cast-stream: Use flag to signal failed recording
PipeWire supports flags to signal a corrupted buffer. We should use the flag SPA_CHUNK_FLAG_CORRUPTED for `chunk->flags` instead of setting `chunk->size = 0` since the size isn't well defined for arbitrary dmabufs and should be set to 0. Sadly clients like obs are using a chunk size of 0 to decide if a buffer should be imported. Thus we should offer both until clients are using the flag. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2323>
This commit is contained in:
parent
9dd6268d13
commit
82fd5cbdbd
@ -657,6 +657,7 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src,
|
|||||||
spa_data->chunk->size = spa_data->maxsize;
|
spa_data->chunk->size = spa_data->maxsize;
|
||||||
spa_data->chunk->stride =
|
spa_data->chunk->stride =
|
||||||
meta_screen_cast_stream_src_calculate_stride (src, spa_data);
|
meta_screen_cast_stream_src_calculate_stride (src, spa_data);
|
||||||
|
spa_data->chunk->flags = SPA_CHUNK_FLAG_NONE;
|
||||||
|
|
||||||
/* Update VideoCrop if needed */
|
/* Update VideoCrop if needed */
|
||||||
spa_meta_video_crop =
|
spa_meta_video_crop =
|
||||||
@ -686,11 +687,13 @@ meta_screen_cast_stream_src_maybe_record_frame (MetaScreenCastStreamSrc *src,
|
|||||||
{
|
{
|
||||||
g_warning ("Failed to record screen cast frame: %s", error->message);
|
g_warning ("Failed to record screen cast frame: %s", error->message);
|
||||||
spa_buffer->datas[0].chunk->size = 0;
|
spa_buffer->datas[0].chunk->size = 0;
|
||||||
|
spa_buffer->datas[0].chunk->flags = SPA_CHUNK_FLAG_CORRUPTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
spa_buffer->datas[0].chunk->size = 0;
|
spa_buffer->datas[0].chunk->size = 0;
|
||||||
|
spa_buffer->datas[0].chunk->flags = SPA_CHUNK_FLAG_CORRUPTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
maybe_record_cursor (src, spa_buffer);
|
maybe_record_cursor (src, spa_buffer);
|
||||||
|
Loading…
Reference in New Issue
Block a user