output: add wlr_output_set_hardware_cursors_enabled

And use it in screencopy.
This commit is contained in:
emersion 2018-09-17 15:07:08 +02:00
parent 9288c827aa
commit 928572c14d
4 changed files with 62 additions and 11 deletions

View file

@ -107,6 +107,7 @@ struct wlr_output {
struct wl_list cursors; // wlr_output_cursor::link
struct wlr_output_cursor *hardware_cursor;
int software_cursor_locks; // number of locks forcing software cursors
// the output position in layout space reported to clients
int32_t lx, ly;
@ -196,6 +197,14 @@ bool wlr_output_export_dmabuf(struct wlr_output *output,
void wlr_output_set_fullscreen_surface(struct wlr_output *output,
struct wlr_surface *surface);
struct wlr_output *wlr_output_from_resource(struct wl_resource *resource);
/**
* Locks the output to only use software cursors instead of hardware cursors.
* This is useful if hardware cursors need to be temporarily disabled (e.g.
* during screen capture). There must be as many unlocks as there have been
* locks to restore the original state. There should never be an unlock before
* a lock.
*/
void wlr_output_lock_software_cursors(struct wlr_output *output, bool lock);
struct wlr_output_cursor *wlr_output_cursor_create(struct wlr_output *output);

View file

@ -9,6 +9,7 @@
#ifndef WLR_TYPES_WLR_SCREENCOPY_V1_H
#define WLR_TYPES_WLR_SCREENCOPY_V1_H
#include <stdbool.h>
#include <wayland-server.h>
#include <wlr/types/wlr_box.h>
@ -35,6 +36,8 @@ struct wlr_screencopy_frame_v1 {
struct wlr_box box;
int stride;
bool overlay_cursor, cursor_locked;
struct wl_shm_buffer *buffer;
struct wl_listener buffer_destroy;