mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05: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…
	
	Add table
		Add a link
		
	
		Reference in a new issue