screencast: add linux_dmabuf to registry

This commit is contained in:
columbarius 2021-06-17 23:56:47 +02:00
parent e1e0f5e143
commit b2c5a94e8c
3 changed files with 11 additions and 0 deletions

View file

@ -103,6 +103,7 @@ struct xdpw_screencast_context {
struct zwlr_screencopy_manager_v1 *screencopy_manager; struct zwlr_screencopy_manager_v1 *screencopy_manager;
struct zxdg_output_manager_v1 *xdg_output_manager; struct zxdg_output_manager_v1 *xdg_output_manager;
struct wl_shm *shm; struct wl_shm *shm;
struct zwp_linux_dmabuf_v1 *linux_dmabuf;
// gbm // gbm
struct gbm_device *gbm; struct gbm_device *gbm;

View file

@ -12,6 +12,8 @@
#define XDG_OUTPUT_MANAGER_VERSION 3 #define XDG_OUTPUT_MANAGER_VERSION 3
#define LINUX_DMABUF_VERSION 3
struct xdpw_state; struct xdpw_state;
int xdpw_wlr_screencopy_init(struct xdpw_state *state); int xdpw_wlr_screencopy_init(struct xdpw_state *state);

View file

@ -1,5 +1,6 @@
#include "wlr_screencast.h" #include "wlr_screencast.h"
#include "linux-dmabuf-unstable-v1-client-protocol.h"
#include "wlr-screencopy-unstable-v1-client-protocol.h" #include "wlr-screencopy-unstable-v1-client-protocol.h"
#include "xdg-output-unstable-v1-client-protocol.h" #include "xdg-output-unstable-v1-client-protocol.h"
#include <fcntl.h> #include <fcntl.h>
@ -582,6 +583,10 @@ static void wlr_registry_handle_add(void *data, struct wl_registry *reg,
ctx->xdg_output_manager = ctx->xdg_output_manager =
wl_registry_bind(reg, id, &zxdg_output_manager_v1_interface, XDG_OUTPUT_MANAGER_VERSION); wl_registry_bind(reg, id, &zxdg_output_manager_v1_interface, XDG_OUTPUT_MANAGER_VERSION);
} }
if (strcmp(interface, zwp_linux_dmabuf_v1_interface.name) == 0) {
logprint(DEBUG, "wlroots: |-- registered to interface %s (Version %u)", interface, LINUX_DMABUF_VERSION);
ctx->linux_dmabuf = wl_registry_bind(reg, id, &zwp_linux_dmabuf_v1_interface, LINUX_DMABUF_VERSION);
}
} }
static void wlr_registry_handle_remove(void *data, struct wl_registry *reg, static void wlr_registry_handle_remove(void *data, struct wl_registry *reg,
@ -677,6 +682,9 @@ void xdpw_wlr_screencopy_finish(struct xdpw_screencast_context *ctx) {
gbm_device_destroy(ctx->gbm); gbm_device_destroy(ctx->gbm);
close(fd); close(fd);
} }
if (ctx->linux_dmabuf) {
zwp_linux_dmabuf_v1_destroy(ctx->linux_dmabuf);
}
if (ctx->registry) { if (ctx->registry) {
wl_registry_destroy(ctx->registry); wl_registry_destroy(ctx->registry);
} }