mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-06-13 14:32:57 -04:00
screencopy-v1: fail concurrent capture_output requests
Send the failed event immediately when a client sends capture_output or capture_output_region for an output that already has a live frame owned by that client. Enforces one frame per (client, output) pair, matching ext-image-copy- capture-v1's create_frame restriction without adding a new error code or bumping the interface version.
This commit is contained in:
parent
a94cd29eb1
commit
fc1cc7656a
1 changed files with 10 additions and 0 deletions
|
|
@ -512,6 +512,16 @@ static void capture_output(struct wl_client *wl_client,
|
|||
return;
|
||||
}
|
||||
|
||||
struct wlr_screencopy_frame_v1 *existing;
|
||||
wl_list_for_each(existing, &client->manager->frames, link) {
|
||||
if (existing->client == client && existing->output == output) {
|
||||
wl_resource_set_user_data(frame->resource, NULL);
|
||||
zwlr_screencopy_frame_v1_send_failed(frame->resource);
|
||||
free(frame);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
frame->client = client;
|
||||
client->ref++;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue