|
|
|
@ -19,9 +19,11 @@ static void wl_compositor_create_surface(struct wl_client *client,
|
|
|
|
|
compositor->renderer);
|
|
|
|
|
surface->compositor_data = compositor;
|
|
|
|
|
surface->compositor_listener.notify = &destroy_surface_listener;
|
|
|
|
|
wl_resource_add_destroy_listener(surface_resource, &surface->compositor_listener);
|
|
|
|
|
wl_resource_add_destroy_listener(surface_resource,
|
|
|
|
|
&surface->compositor_listener);
|
|
|
|
|
|
|
|
|
|
wl_list_insert(&compositor->surfaces, wl_resource_get_link(surface_resource));
|
|
|
|
|
wl_list_insert(&compositor->surfaces,
|
|
|
|
|
wl_resource_get_link(surface_resource));
|
|
|
|
|
wl_signal_emit(&compositor->events.create_surface, surface);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -52,15 +54,17 @@ static void wl_compositor_bind(struct wl_client *wl_client, void *_compositor,
|
|
|
|
|
struct wlr_compositor *compositor = _compositor;
|
|
|
|
|
assert(wl_client && compositor);
|
|
|
|
|
if (version > 4) {
|
|
|
|
|
wlr_log(L_ERROR, "Client requested unsupported wl_compositor version, disconnecting");
|
|
|
|
|
wlr_log(L_ERROR, "Client requested unsupported wl_compositor version, "
|
|
|
|
|
"disconnecting");
|
|
|
|
|
wl_client_destroy(wl_client);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
struct wl_resource *wl_resource = wl_resource_create(
|
|
|
|
|
wl_client, &wl_compositor_interface, version, id);
|
|
|
|
|
struct wl_resource *wl_resource =
|
|
|
|
|
wl_resource_create(wl_client, &wl_compositor_interface, version, id);
|
|
|
|
|
wl_resource_set_implementation(wl_resource, &wl_compositor_impl,
|
|
|
|
|
compositor, wl_compositor_destroy);
|
|
|
|
|
wl_list_insert(&compositor->wl_resources, wl_resource_get_link(wl_resource));
|
|
|
|
|
wl_list_insert(&compositor->wl_resources,
|
|
|
|
|
wl_resource_get_link(wl_resource));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void wlr_compositor_destroy(struct wlr_compositor *compositor) {
|
|
|
|
@ -70,7 +74,8 @@ void wlr_compositor_destroy(struct wlr_compositor *compositor) {
|
|
|
|
|
|
|
|
|
|
struct wlr_compositor *wlr_compositor_create(struct wl_display *display,
|
|
|
|
|
struct wlr_renderer *renderer) {
|
|
|
|
|
struct wlr_compositor *compositor = calloc(1, sizeof(struct wlr_compositor));
|
|
|
|
|
struct wlr_compositor *compositor =
|
|
|
|
|
calloc(1, sizeof(struct wlr_compositor));
|
|
|
|
|
if (!compositor) {
|
|
|
|
|
wlr_log_errno(L_ERROR, "Could not allocate wlr compositor");
|
|
|
|
|
return NULL;
|
|
|
|
|