mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-12-27 11:59:50 +01:00
Merge pull request #834 from emersion/surface-is-subsurface
Add wlr_surface_is_subsurface and wlr_subsurface_from_surface
This commit is contained in:
commit
19b576734e
2 changed files with 21 additions and 1 deletions
|
@ -4,6 +4,8 @@
|
|||
#include <wayland-server.h>
|
||||
#include <wlr/render/wlr_renderer.h>
|
||||
|
||||
struct wlr_surface;
|
||||
|
||||
struct wlr_compositor {
|
||||
struct wl_global *wl_global;
|
||||
struct wl_list wl_resources;
|
||||
|
@ -22,4 +24,8 @@ void wlr_compositor_destroy(struct wlr_compositor *wlr_compositor);
|
|||
struct wlr_compositor *wlr_compositor_create(struct wl_display *display,
|
||||
struct wlr_renderer *renderer);
|
||||
|
||||
bool wlr_surface_is_subsurface(struct wlr_surface *surface);
|
||||
|
||||
struct wlr_subsurface *wlr_subsurface_from_surface(struct wlr_surface *surface);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -7,6 +7,18 @@
|
|||
#include <wlr/util/log.h>
|
||||
#include "util/signal.h"
|
||||
|
||||
static const char *subsurface_role = "wl_subsurface";
|
||||
|
||||
bool wlr_surface_is_subsurface(struct wlr_surface *surface) {
|
||||
return strcmp(surface->role, subsurface_role) == 0;
|
||||
}
|
||||
|
||||
struct wlr_subsurface *wlr_subsurface_from_surface(
|
||||
struct wlr_surface *surface) {
|
||||
assert(wlr_surface_is_subsurface(surface));
|
||||
return (struct wlr_subsurface *)surface->role_data;
|
||||
}
|
||||
|
||||
static const struct wl_compositor_interface wl_compositor_impl;
|
||||
|
||||
static struct wlr_compositor *compositor_from_resource(struct wl_resource *resource) {
|
||||
|
@ -134,7 +146,7 @@ static void subcompositor_get_subsurface(struct wl_client *client,
|
|||
return;
|
||||
}
|
||||
|
||||
if (wlr_surface_set_role(surface, "wl_subsurface", resource,
|
||||
if (wlr_surface_set_role(surface, subsurface_role, resource,
|
||||
WL_SUBCOMPOSITOR_ERROR_BAD_SURFACE) < 0) {
|
||||
return;
|
||||
}
|
||||
|
@ -144,6 +156,8 @@ static void subcompositor_get_subsurface(struct wl_client *client,
|
|||
wl_resource_post_no_memory(resource);
|
||||
return;
|
||||
}
|
||||
|
||||
surface->role_data = surface->subsurface;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue