aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-05-28 08:20:01 +0100
committeremersion <contact@emersion.fr>2018-05-29 18:47:19 +0100
commit2681352e0422221c047b79dfa5c19425cf59d403 (patch)
treea497ed929271b89ca3d417dd1d7ecef1dcf3feba
parentf204a9127c69cd896d3667a38e3bfb34377715c9 (diff)
export-dmabuf: permanently fail if backend doesn't implement export_dmabuf
-rw-r--r--types/wlr_export_dmabuf_v1.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/types/wlr_export_dmabuf_v1.c b/types/wlr_export_dmabuf_v1.c
index a2faf2ff..a86fe78c 100644
--- a/types/wlr_export_dmabuf_v1.c
+++ b/types/wlr_export_dmabuf_v1.c
@@ -1,6 +1,7 @@
#include <assert.h>
#include <stdlib.h>
#include <unistd.h>
+#include <wlr/interfaces/wlr_output.h>
#include <wlr/types/wlr_export_dmabuf_v1.h>
#include <wlr/types/wlr_linux_dmabuf.h>
#include <wlr/types/wlr_output.h>
@@ -90,6 +91,12 @@ static void manager_handle_capture_output(struct wl_client *client,
wl_list_insert(&manager->frames, &frame->link);
+ if (!output->impl->export_dmabuf) {
+ zwlr_export_dmabuf_frame_v1_send_cancel(frame->resource,
+ ZWLR_EXPORT_DMABUF_FRAME_V1_CANCEL_REASON_PERNAMENT);
+ return;
+ }
+
struct wlr_dmabuf_buffer_attribs *attribs = &frame->attribs;
if (!wlr_output_export_dmabuf(output, attribs)) {
zwlr_export_dmabuf_frame_v1_send_cancel(frame->resource,