ext-image-capture-source-v1: add source pointer cursors

master
Simon Ser 8 months ago
parent 4035f23792
commit a05965afe5

@ -13,12 +13,15 @@
#include <wlr/types/wlr_ext_image_capture_source_v1.h>
struct wlr_ext_image_copy_capture_frame_v1;
struct wlr_seat;
struct wlr_ext_image_capture_source_v1_interface {
void (*schedule_frame)(struct wlr_ext_image_capture_source_v1 *source);
void (*copy_frame)(struct wlr_ext_image_capture_source_v1 *source,
struct wlr_ext_image_copy_capture_frame_v1 *dst_frame,
struct wlr_ext_image_capture_source_v1_frame_event *frame_event);
struct wlr_ext_image_capture_source_v1_cursor *(*get_pointer_cursor)(
struct wlr_ext_image_capture_source_v1 *source, struct wlr_seat *seat);
};
void wlr_ext_image_capture_source_v1_init(struct wlr_ext_image_capture_source_v1 *source,
@ -27,4 +30,8 @@ void wlr_ext_image_capture_source_v1_finish(struct wlr_ext_image_capture_source_
bool wlr_ext_image_capture_source_v1_create_resource(struct wlr_ext_image_capture_source_v1 *source,
struct wl_client *client, uint32_t new_id);
void wlr_ext_image_capture_source_v1_cursor_init(struct wlr_ext_image_capture_source_v1_cursor *source_cursor,
const struct wlr_ext_image_capture_source_v1_interface *impl);
void wlr_ext_image_capture_source_v1_cursor_finish(struct wlr_ext_image_capture_source_v1_cursor *source_cursor);
#endif

@ -48,6 +48,26 @@ struct wlr_ext_image_capture_source_v1_frame_event {
const pixman_region32_t *damage;
};
/**
* A cursor capture source.
*
* Provides additional cursor-specific functionality on top of
* struct wlr_ext_image_capture_source_v1.
*/
struct wlr_ext_image_capture_source_v1_cursor {
struct wlr_ext_image_capture_source_v1 base;
bool entered;
int32_t x, y;
struct {
int32_t x, y;
} hotspot;
struct {
struct wl_signal update;
} events;
};
/**
* Obtain a struct wlr_ext_image_capture_source_v1 from an ext_image_capture_source_v1
* resource.

@ -65,3 +65,14 @@ bool wlr_ext_image_capture_source_v1_create_resource(struct wlr_ext_image_captur
}
return true;
}
void wlr_ext_image_capture_source_v1_cursor_init(struct wlr_ext_image_capture_source_v1_cursor *source_cursor,
const struct wlr_ext_image_capture_source_v1_interface *impl) {
*source_cursor = (struct wlr_ext_image_capture_source_v1_cursor){0};
wlr_ext_image_capture_source_v1_init(&source_cursor->base, impl);
wl_signal_init(&source_cursor->events.update);
}
void wlr_ext_image_capture_source_v1_cursor_finish(struct wlr_ext_image_capture_source_v1_cursor *source_cursor) {
wlr_ext_image_capture_source_v1_finish(&source_cursor->base);
}

Loading…
Cancel
Save