mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-22 12:55:58 +01:00
backend/wayland: use xdga client activation
This commit is contained in:
parent
e2aff8a9b0
commit
8e225261f0
4 changed files with 21 additions and 0 deletions
|
@ -24,6 +24,7 @@
|
||||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||||
#include "pointer-gestures-unstable-v1-client-protocol.h"
|
#include "pointer-gestures-unstable-v1-client-protocol.h"
|
||||||
#include "presentation-time-client-protocol.h"
|
#include "presentation-time-client-protocol.h"
|
||||||
|
#include "xdg-activation-v1-client-protocol.h"
|
||||||
#include "xdg-decoration-unstable-v1-client-protocol.h"
|
#include "xdg-decoration-unstable-v1-client-protocol.h"
|
||||||
#include "xdg-shell-client-protocol.h"
|
#include "xdg-shell-client-protocol.h"
|
||||||
#include "tablet-unstable-v2-client-protocol.h"
|
#include "tablet-unstable-v2-client-protocol.h"
|
||||||
|
@ -244,6 +245,9 @@ static void registry_global(void *data, struct wl_registry *registry,
|
||||||
} else if (strcmp(iface, wl_shm_interface.name) == 0) {
|
} else if (strcmp(iface, wl_shm_interface.name) == 0) {
|
||||||
wl->shm = wl_registry_bind(registry, name, &wl_shm_interface, 1);
|
wl->shm = wl_registry_bind(registry, name, &wl_shm_interface, 1);
|
||||||
wl_shm_add_listener(wl->shm, &shm_listener, wl);
|
wl_shm_add_listener(wl->shm, &shm_listener, wl);
|
||||||
|
} else if (strcmp(iface, xdg_activation_v1_interface.name) == 0) {
|
||||||
|
wl->activation_v1 = wl_registry_bind(registry, name,
|
||||||
|
&xdg_activation_v1_interface, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,6 +343,7 @@ static void backend_destroy(struct wlr_backend *backend) {
|
||||||
zwp_relative_pointer_manager_v1_destroy(wl->zwp_relative_pointer_manager_v1);
|
zwp_relative_pointer_manager_v1_destroy(wl->zwp_relative_pointer_manager_v1);
|
||||||
}
|
}
|
||||||
free(wl->drm_render_name);
|
free(wl->drm_render_name);
|
||||||
|
free(wl->activation_token);
|
||||||
xdg_wm_base_destroy(wl->xdg_wm_base);
|
xdg_wm_base_destroy(wl->xdg_wm_base);
|
||||||
wl_compositor_destroy(wl->compositor);
|
wl_compositor_destroy(wl->compositor);
|
||||||
wl_registry_destroy(wl->registry);
|
wl_registry_destroy(wl->registry);
|
||||||
|
@ -445,6 +450,12 @@ struct wlr_backend *wlr_wl_backend_create(struct wl_display *display,
|
||||||
wl->local_display_destroy.notify = handle_display_destroy;
|
wl->local_display_destroy.notify = handle_display_destroy;
|
||||||
wl_display_add_destroy_listener(display, &wl->local_display_destroy);
|
wl_display_add_destroy_listener(display, &wl->local_display_destroy);
|
||||||
|
|
||||||
|
const char *token = getenv("XDG_ACTIVATION_TOKEN");
|
||||||
|
if (token != NULL) {
|
||||||
|
wl->activation_token = strdup(token);
|
||||||
|
unsetenv("XDG_ACTIVATION_TOKEN");
|
||||||
|
}
|
||||||
|
|
||||||
return &wl->backend;
|
return &wl->backend;
|
||||||
|
|
||||||
error_remote_display_src:
|
error_remote_display_src:
|
||||||
|
|
|
@ -12,6 +12,7 @@ client_protos = [
|
||||||
'presentation-time',
|
'presentation-time',
|
||||||
'relative-pointer-unstable-v1',
|
'relative-pointer-unstable-v1',
|
||||||
'tablet-unstable-v2',
|
'tablet-unstable-v2',
|
||||||
|
'xdg-activation-v1',
|
||||||
'xdg-decoration-unstable-v1',
|
'xdg-decoration-unstable-v1',
|
||||||
'xdg-shell',
|
'xdg-shell',
|
||||||
]
|
]
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||||
#include "presentation-time-client-protocol.h"
|
#include "presentation-time-client-protocol.h"
|
||||||
|
#include "xdg-activation-v1-client-protocol.h"
|
||||||
#include "xdg-decoration-unstable-v1-client-protocol.h"
|
#include "xdg-decoration-unstable-v1-client-protocol.h"
|
||||||
#include "xdg-shell-client-protocol.h"
|
#include "xdg-shell-client-protocol.h"
|
||||||
|
|
||||||
|
@ -594,6 +595,12 @@ struct wlr_output *wlr_wl_output_create(struct wlr_backend *wlr_backend) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: let the compositor do this bit
|
||||||
|
if (backend->activation_v1 && backend->activation_token) {
|
||||||
|
xdg_activation_v1_activate(backend->activation_v1,
|
||||||
|
backend->activation_token, output->surface);
|
||||||
|
}
|
||||||
|
|
||||||
// Start the rendering loop by requesting the compositor to render a frame
|
// Start the rendering loop by requesting the compositor to render a frame
|
||||||
wlr_output_schedule_frame(wlr_output);
|
wlr_output_schedule_frame(wlr_output);
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ struct wlr_wl_backend {
|
||||||
size_t requested_outputs;
|
size_t requested_outputs;
|
||||||
size_t last_output_num;
|
size_t last_output_num;
|
||||||
struct wl_listener local_display_destroy;
|
struct wl_listener local_display_destroy;
|
||||||
|
char *activation_token;
|
||||||
|
|
||||||
/* remote state */
|
/* remote state */
|
||||||
struct wl_display *remote_display;
|
struct wl_display *remote_display;
|
||||||
|
@ -42,6 +43,7 @@ struct wlr_wl_backend {
|
||||||
struct wlr_drm_format_set shm_formats;
|
struct wlr_drm_format_set shm_formats;
|
||||||
struct wlr_drm_format_set linux_dmabuf_v1_formats;
|
struct wlr_drm_format_set linux_dmabuf_v1_formats;
|
||||||
struct wl_drm *legacy_drm;
|
struct wl_drm *legacy_drm;
|
||||||
|
struct xdg_activation_v1 *activation_v1;
|
||||||
char *drm_render_name;
|
char *drm_render_name;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue