aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-06-19 19:07:29 +0100
committeremersion <contact@emersion.fr>2018-06-30 22:17:59 +0100
commit73755ad348657fdf8d9e0f9a48ee13a2ab947e35 (patch)
tree92eea1b7076e38a38792b7ff222bd9a51975c823 /include
parent02dfa9101ec7fd8328ed329d2f2faa815b1ad61c (diff)
screencopy-v1: add basic implementation
Diffstat (limited to 'include')
-rw-r--r--include/rootston/desktop.h2
-rw-r--r--include/wlr/types/wlr_screencopy_v1.h36
2 files changed, 38 insertions, 0 deletions
diff --git a/include/rootston/desktop.h b/include/rootston/desktop.h
index dfe070ca..88c5ca90 100644
--- a/include/rootston/desktop.h
+++ b/include/rootston/desktop.h
@@ -22,6 +22,7 @@
#include <wlr/types/wlr_list.h>
#include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_idle_inhibit_v1.h>
+#include <wlr/types/wlr_screencopy_v1.h>
#include "rootston/view.h"
#include "rootston/config.h"
#include "rootston/output.h"
@@ -54,6 +55,7 @@ struct roots_desktop {
struct wlr_linux_dmabuf *linux_dmabuf;
struct wlr_layer_shell *layer_shell;
struct wlr_virtual_keyboard_manager_v1 *virtual_keyboard;
+ struct wlr_screencopy_manager_v1 *screencopy;
struct wl_listener new_output;
struct wl_listener layout_change;
diff --git a/include/wlr/types/wlr_screencopy_v1.h b/include/wlr/types/wlr_screencopy_v1.h
new file mode 100644
index 00000000..fbcc1ce2
--- /dev/null
+++ b/include/wlr/types/wlr_screencopy_v1.h
@@ -0,0 +1,36 @@
+#ifndef WLR_TYPES_WLR_SCREENCOPY_V1_H
+#define WLR_TYPES_WLR_SCREENCOPY_V1_H
+
+#include <wayland-server.h>
+
+struct wlr_screencopy_manager_v1 {
+ struct wl_global *global;
+ struct wl_list resources; // wl_resource
+ struct wl_list frames; // wlr_screencopy_frame_v1::link
+
+ struct wl_listener display_destroy;
+
+ void *data;
+};
+
+struct wlr_screencopy_frame_v1 {
+ struct wl_resource *resource;
+ struct wlr_screencopy_manager_v1 *manager;
+ struct wl_list link;
+
+ int32_t width, height;
+
+ struct wl_shm_buffer *buffer;
+
+ struct wlr_output *output;
+ struct wl_listener output_swap_buffers;
+
+ void *data;
+};
+
+struct wlr_screencopy_manager_v1 *wlr_screencopy_manager_v1_create(
+ struct wl_display *display);
+void wlr_screencopy_manager_v1_destroy(
+ struct wlr_screencopy_manager_v1 *screencopy);
+
+#endif