diff --git a/include/wlr/types/wlr_ext_image_capture_source_v1.h b/include/wlr/types/wlr_ext_image_capture_source_v1.h index e38f68795..6cbbacf76 100644 --- a/include/wlr/types/wlr_ext_image_capture_source_v1.h +++ b/include/wlr/types/wlr_ext_image_capture_source_v1.h @@ -131,4 +131,12 @@ struct wlr_ext_image_capture_source_v1 *wlr_ext_image_capture_source_v1_create_w struct wlr_scene_node *node, struct wl_event_loop *event_loop, struct wlr_allocator *allocator, struct wlr_renderer *renderer); +/** + * Returns the corresponding wlr_output for a image capture source + * managed by wlr_ext_output_image_capture_source_manager_v1 + * or NULL if the image capture source is not managed by + * wlr_ext_output_image_capture_source_manager_v1. + */ +struct wlr_output *wlr_output_try_from_ext_image_capture_source_v1(struct wlr_ext_image_capture_source_v1 *source); + #endif diff --git a/types/ext_image_capture_source_v1/output.c b/types/ext_image_capture_source_v1/output.c index a737b4e58..75fa15f4d 100644 --- a/types/ext_image_capture_source_v1/output.c +++ b/types/ext_image_capture_source_v1/output.c @@ -392,3 +392,13 @@ static void output_cursor_source_finish(struct output_cursor_source *cursor_sour wl_list_remove(&cursor_source->output_commit.link); wl_list_remove(&cursor_source->prev_buffer_release.link); } + +struct wlr_output *wlr_output_try_from_ext_image_capture_source_v1(struct wlr_ext_image_capture_source_v1 *source) { + if (source->impl == &output_source_impl) { + struct wlr_ext_output_image_capture_source_v1 *output_source = + (struct wlr_ext_output_image_capture_source_v1*)source; + return output_source->output; + } + + return NULL; +}