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
|
@ -4,6 +4,8 @@
|
||||||
#include <wayland-server.h>
|
#include <wayland-server.h>
|
||||||
#include <wlr/render/wlr_renderer.h>
|
#include <wlr/render/wlr_renderer.h>
|
||||||
|
|
||||||
|
struct wlr_surface;
|
||||||
|
|
||||||
struct wlr_compositor {
|
struct wlr_compositor {
|
||||||
struct wl_global *wl_global;
|
struct wl_global *wl_global;
|
||||||
struct wl_list wl_resources;
|
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_compositor *wlr_compositor_create(struct wl_display *display,
|
||||||
struct wlr_renderer *renderer);
|
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
|
#endif
|
||||||
|
|
|
@ -7,6 +7,18 @@
|
||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
#include "util/signal.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 const struct wl_compositor_interface wl_compositor_impl;
|
||||||
|
|
||||||
static struct wlr_compositor *compositor_from_resource(struct wl_resource *resource) {
|
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;
|
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) {
|
WL_SUBCOMPOSITOR_ERROR_BAD_SURFACE) < 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -144,6 +156,8 @@ static void subcompositor_get_subsurface(struct wl_client *client,
|
||||||
wl_resource_post_no_memory(resource);
|
wl_resource_post_no_memory(resource);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
surface->role_data = surface->subsurface;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue