layer-shell: add _v1 suffix

This commit is contained in:
emersion 2018-09-14 19:32:33 +02:00
parent 769a8e9917
commit fc960e5d06
12 changed files with 115 additions and 115 deletions

View file

@ -9,7 +9,7 @@
#include <wlr/types/wlr_idle_inhibit_v1.h>
#include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_input_inhibitor.h>
#include <wlr/types/wlr_layer_shell.h>
#include <wlr/types/wlr_layer_shell_v1.h>
#include <wlr/types/wlr_list.h>
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_output.h>
@ -52,7 +52,7 @@ struct roots_desktop {
struct wlr_idle *idle;
struct wlr_idle_inhibit_manager_v1 *idle_inhibit;
struct wlr_input_inhibit_manager *input_inhibit;
struct wlr_layer_shell *layer_shell;
struct wlr_layer_shell_v1 *layer_shell;
struct wlr_virtual_keyboard_manager_v1 *virtual_keyboard;
struct wlr_screencopy_manager_v1 *screencopy;
struct wlr_tablet_manager_v2 *tablet_v2;

View file

@ -3,10 +3,10 @@
#include <stdbool.h>
#include <wlr/types/wlr_box.h>
#include <wlr/types/wlr_surface.h>
#include <wlr/types/wlr_layer_shell.h>
#include <wlr/types/wlr_layer_shell_v1.h>
struct roots_layer_surface {
struct wlr_layer_surface *layer_surface;
struct wlr_layer_surface_v1 *layer_surface;
struct wl_list link;
struct wl_listener destroy;

View file

@ -17,7 +17,7 @@ struct roots_seat {
double touch_x, touch_y;
// If the focused layer is set, views cannot receive keyboard focus
struct wlr_layer_surface *focused_layer;
struct wlr_layer_surface_v1 *focused_layer;
// If non-null, only this client can receive input events
struct wl_client *exclusive_client;
@ -140,7 +140,7 @@ struct roots_view *roots_seat_get_focus(struct roots_seat *seat);
void roots_seat_set_focus(struct roots_seat *seat, struct roots_view *view);
void roots_seat_set_focus_layer(struct roots_seat *seat,
struct wlr_layer_surface *layer);
struct wlr_layer_surface_v1 *layer);
void roots_seat_cycle_focus(struct roots_seat *seat);

View file

@ -12,7 +12,7 @@ install_headers(
'wlr_input_device.h',
'wlr_input_inhibitor.h',
'wlr_keyboard.h',
'wlr_layer_shell.h',
'wlr_layer_shell_v1.h',
'wlr_linux_dmabuf_v1.h',
'wlr_list.h',
'wlr_matrix.h',

View file

@ -6,8 +6,8 @@
#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features"
#endif
#ifndef WLR_TYPES_WLR_LAYER_SHELL_H
#define WLR_TYPES_WLR_LAYER_SHELL_H
#ifndef WLR_TYPES_WLR_LAYER_SHELL_V1_H
#define WLR_TYPES_WLR_LAYER_SHELL_V1_H
#include <stdbool.h>
#include <stdint.h>
#include <wayland-server.h>
@ -16,28 +16,28 @@
#include "wlr-layer-shell-unstable-v1-protocol.h"
/**
* wlr_layer_shell allows clients to arrange themselves in "layers" on the
* wlr_layer_shell_v1 allows clients to arrange themselves in "layers" on the
* desktop in accordance with the wlr-layer-shell protocol. When a client is
* added, the new_surface signal will be raised and passed a reference to our
* wlr_layer_surface. At this time, the client will have configured the surface
* as it desires, including information like desired anchors and margins. The
* compositor should use this information to decide how to arrange the layer
* on-screen, then determine the dimensions of the layer and call
* wlr_layer_surface_configure. The client will then attach a buffer and commit
* the surface, at which point the wlr_layer_surface map signal is raised and
* the compositor should begin rendering the surface.
* wlr_layer_surface_v1. At this time, the client will have configured the
* surface as it desires, including information like desired anchors and
* margins. The compositor should use this information to decide how to arrange
* the layer on-screen, then determine the dimensions of the layer and call
* wlr_layer_surface_v1_configure. The client will then attach a buffer and
* commit the surface, at which point the wlr_layer_surface_v1 map signal is
* raised and the compositor should begin rendering the surface.
*/
struct wlr_layer_shell {
struct wlr_layer_shell_v1 {
struct wl_global *global;
struct wl_list client_resources; // wl_resource
struct wl_list resources; // wl_resource
struct wl_list surfaces; // wl_layer_surface
struct wl_listener display_destroy;
struct {
// struct wlr_layer_surface *
// Note: the output may be NULL. In this case, it is your
// responsibility to assign an output before returning.
// struct wlr_layer_surface_v1 *
// Note: the output may be NULL. In this case, it is your
// responsibility to assign an output before returning.
struct wl_signal new_surface;
struct wl_signal destroy;
} events;
@ -45,7 +45,7 @@ struct wlr_layer_shell {
void *data;
};
struct wlr_layer_surface_state {
struct wlr_layer_surface_v1_state {
uint32_t anchor;
int32_t exclusive_zone;
struct {
@ -56,18 +56,18 @@ struct wlr_layer_surface_state {
uint32_t actual_width, actual_height;
};
struct wlr_layer_surface_configure {
struct wl_list link; // wlr_layer_surface::configure_list
struct wlr_layer_surface_v1_configure {
struct wl_list link; // wlr_layer_surface_v1::configure_list
uint32_t serial;
struct wlr_layer_surface_state state;
struct wlr_layer_surface_v1_state state;
};
struct wlr_layer_surface {
struct wl_list link; // wlr_layer_shell::surfaces
struct wlr_layer_surface_v1 {
struct wl_list link; // wlr_layer_shell_v1::surfaces
struct wlr_surface *surface;
struct wlr_output *output;
struct wl_resource *resource;
struct wlr_layer_shell *shell;
struct wlr_layer_shell_v1 *shell;
struct wl_list popups; // wlr_xdg_popup::link
char *namespace;
@ -79,11 +79,11 @@ struct wlr_layer_surface {
uint32_t configure_next_serial;
struct wl_list configure_list;
struct wlr_layer_surface_configure *acked_configure;
struct wlr_layer_surface_v1_configure *acked_configure;
struct wlr_layer_surface_state client_pending;
struct wlr_layer_surface_state server_pending;
struct wlr_layer_surface_state current;
struct wlr_layer_surface_v1_state client_pending;
struct wlr_layer_surface_v1_state server_pending;
struct wlr_layer_surface_v1_state current;
struct wl_listener surface_destroy;
@ -97,29 +97,29 @@ struct wlr_layer_surface {
void *data;
};
struct wlr_layer_shell *wlr_layer_shell_create(struct wl_display *display);
void wlr_layer_shell_destroy(struct wlr_layer_shell *layer_shell);
struct wlr_layer_shell_v1 *wlr_layer_shell_v1_create(struct wl_display *display);
void wlr_layer_shell_v1_destroy(struct wlr_layer_shell_v1 *layer_shell);
/**
* Notifies the layer surface to configure itself with this width/height. The
* layer_surface will signal its map event when the surface is ready to assume
* this size.
*/
void wlr_layer_surface_configure(struct wlr_layer_surface *surface,
void wlr_layer_surface_v1_configure(struct wlr_layer_surface_v1 *surface,
uint32_t width, uint32_t height);
/**
* Unmaps this layer surface and notifies the client that it has been closed.
*/
void wlr_layer_surface_close(struct wlr_layer_surface *surface);
void wlr_layer_surface_v1_close(struct wlr_layer_surface_v1 *surface);
bool wlr_surface_is_layer_surface(struct wlr_surface *surface);
struct wlr_layer_surface *wlr_layer_surface_from_wlr_surface(
struct wlr_layer_surface_v1 *wlr_layer_surface_v1_from_wlr_surface(
struct wlr_surface *surface);
/* Calls the iterator function for each sub-surface and popup of this surface */
void wlr_layer_surface_for_each_surface(struct wlr_layer_surface *surface,
void wlr_layer_surface_v1_for_each_surface(struct wlr_layer_surface_v1 *surface,
wlr_surface_iterator_func_t iterator, void *user_data);
/**
@ -127,7 +127,8 @@ void wlr_layer_surface_for_each_surface(struct wlr_layer_surface *surface,
* coordinates. Returns the surface and coordinates in the leaf surface
* coordinate system or NULL if no surface is found at that location.
*/
struct wlr_surface *wlr_layer_surface_surface_at(
struct wlr_layer_surface *surface, double sx, double sy,
struct wlr_surface *wlr_layer_surface_v1_surface_at(
struct wlr_layer_surface_v1 *surface, double sx, double sy,
double *sub_x, double *sub_y);
#endif

View file

@ -275,8 +275,8 @@ static void roots_cursor_press_button(struct roots_cursor *cursor,
roots_seat_set_focus(seat, view);
}
if (surface && wlr_surface_is_layer_surface(surface)) {
struct wlr_layer_surface *layer =
wlr_layer_surface_from_wlr_surface(surface);
struct wlr_layer_surface_v1 *layer =
wlr_layer_surface_v1_from_wlr_surface(surface);
if (layer->current.keyboard_interactive) {
roots_seat_set_focus_layer(seat, layer);
}

View file

@ -13,7 +13,7 @@
#include <wlr/types/wlr_idle_inhibit_v1.h>
#include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_input_inhibitor.h>
#include <wlr/types/wlr_layer_shell.h>
#include <wlr/types/wlr_layer_shell_v1.h>
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_primary_selection.h>
#include <wlr/types/wlr_server_decoration.h>
@ -667,7 +667,7 @@ static struct wlr_surface *layer_surface_at(struct roots_output *output,
double _sx = ox - roots_surface->geo.x;
double _sy = oy - roots_surface->geo.y;
struct wlr_surface *sub = wlr_layer_surface_surface_at(
struct wlr_surface *sub = wlr_layer_surface_v1_surface_at(
roots_surface->layer_surface, _sx, _sy, sx, sy);
if (sub) {
@ -817,7 +817,7 @@ struct roots_desktop *desktop_create(struct roots_server *server,
&desktop->wl_shell_surface);
desktop->wl_shell_surface.notify = handle_wl_shell_surface;
desktop->layer_shell = wlr_layer_shell_create(server->wl_display);
desktop->layer_shell = wlr_layer_shell_v1_create(server->wl_display);
wl_signal_add(&desktop->layer_shell->events.new_surface,
&desktop->layer_shell_surface);
desktop->layer_shell_surface.notify = handle_layer_shell_surface;

View file

@ -10,7 +10,7 @@
#include <wayland-server.h>
#include <wlr/types/wlr_box.h>
#include <wlr/types/wlr_surface.h>
#include <wlr/types/wlr_layer_shell.h>
#include <wlr/types/wlr_layer_shell_v1.h>
#include <wlr/util/log.h>
#include "rootston/desktop.h"
#include "rootston/layers.h"
@ -111,8 +111,8 @@ static void arrange_layer(struct wlr_output *output,
wlr_output_effective_resolution(output,
&full_area.width, &full_area.height);
wl_list_for_each_reverse(roots_surface, list, link) {
struct wlr_layer_surface *layer = roots_surface->layer_surface;
struct wlr_layer_surface_state *state = &layer->current;
struct wlr_layer_surface_v1 *layer = roots_surface->layer_surface;
struct wlr_layer_surface_v1_state *state = &layer->current;
if (exclusive != (state->exclusive_zone > 0)) {
continue;
}
@ -171,7 +171,7 @@ static void arrange_layer(struct wlr_output *output,
}
if (box.width < 0 || box.height < 0) {
// TODO: Bubble up a protocol error?
wlr_layer_surface_close(layer);
wlr_layer_surface_v1_close(layer);
continue;
}
@ -181,7 +181,7 @@ static void arrange_layer(struct wlr_output *output,
apply_exclusive(usable_area, state->anchor, state->exclusive_zone,
state->margin.top, state->margin.right,
state->margin.bottom, state->margin.left);
wlr_layer_surface_configure(layer, box.width, box.height);
wlr_layer_surface_v1_configure(layer, box.width, box.height);
// Having a cursor newly end up over the moved layer will not
// automatically send a motion event to the surface. The event needs to
@ -270,13 +270,13 @@ static void handle_output_destroy(struct wl_listener *listener, void *data) {
wl_container_of(listener, layer, output_destroy);
layer->layer_surface->output = NULL;
wl_list_remove(&layer->output_destroy.link);
wlr_layer_surface_close(layer->layer_surface);
wlr_layer_surface_v1_close(layer->layer_surface);
}
static void handle_surface_commit(struct wl_listener *listener, void *data) {
struct roots_layer_surface *layer =
wl_container_of(listener, layer, surface_commit);
struct wlr_layer_surface *layer_surface = layer->layer_surface;
struct wlr_layer_surface_v1 *layer_surface = layer->layer_surface;
struct wlr_output *wlr_output = layer_surface->output;
if (wlr_output != NULL) {
struct roots_output *output = wlr_output->data;
@ -308,7 +308,7 @@ static void handle_surface_commit(struct wl_listener *listener, void *data) {
}
}
static void unmap(struct wlr_layer_surface *layer_surface) {
static void unmap(struct wlr_layer_surface_v1 *layer_surface) {
struct roots_layer_surface *layer = layer_surface->data;
struct wlr_output *wlr_output = layer_surface->output;
if (wlr_output != NULL) {
@ -337,7 +337,7 @@ static void handle_destroy(struct wl_listener *listener, void *data) {
}
static void handle_map(struct wl_listener *listener, void *data) {
struct wlr_layer_surface *layer_surface = data;
struct wlr_layer_surface_v1 *layer_surface = data;
struct roots_layer_surface *layer = layer_surface->data;
struct wlr_output *wlr_output = layer_surface->output;
struct roots_output *output = wlr_output->data;
@ -430,7 +430,7 @@ static void handle_new_popup(struct wl_listener *listener, void *data) {
}
void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
struct wlr_layer_surface *layer_surface = data;
struct wlr_layer_surface_v1 *layer_surface = data;
struct roots_desktop *desktop =
wl_container_of(listener, desktop, layer_shell_surface);
wlr_log(WLR_DEBUG, "new layer surface: namespace %s layer %d anchor %d "
@ -460,7 +460,7 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
if (output) {
layer_surface->output = output;
} else {
wlr_layer_surface_close(layer_surface);
wlr_layer_surface_v1_close(layer_surface);
return;
}
}
@ -497,7 +497,7 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) {
// Temporarily set the layer's current state to client_pending
// So that we can easily arrange it
struct wlr_layer_surface_state old_state = layer_surface->current;
struct wlr_layer_surface_v1_state old_state = layer_surface->current;
layer_surface->current = layer_surface->client_pending;
arrange_layers(output);

View file

@ -363,14 +363,14 @@ static void render_layer(struct roots_output *output,
struct wl_list *layer) {
struct roots_layer_surface *roots_surface;
wl_list_for_each(roots_surface, layer, link) {
struct wlr_layer_surface *layer = roots_surface->layer_surface;
struct wlr_layer_surface_v1 *layer = roots_surface->layer_surface;
surface_for_each_surface(layer->surface,
roots_surface->geo.x + output_layout_box->x,
roots_surface->geo.y + output_layout_box->y,
0, &data->layout, render_surface, data);
wlr_layer_surface_for_each_surface(layer, render_surface, data);
wlr_layer_surface_v1_for_each_surface(layer, render_surface, data);
}
}
@ -380,7 +380,7 @@ static void layers_send_done(
for (size_t i = 0; i < len; ++i) {
struct roots_layer_surface *roots_surface;
wl_list_for_each(roots_surface, &output->layers[i], link) {
struct wlr_layer_surface *layer = roots_surface->layer_surface;
struct wlr_layer_surface_v1 *layer = roots_surface->layer_surface;
wlr_surface_send_frame_done(layer->surface, when);
struct wlr_xdg_popup *popup;
wl_list_for_each(popup, &roots_surface->layer_surface->popups, link) {

View file

@ -8,7 +8,7 @@
#include <wlr/backend/libinput.h>
#include <wlr/config.h>
#include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_layer_shell.h>
#include <wlr/types/wlr_layer_shell_v1.h>
#include <wlr/types/wlr_tablet_v2.h>
#include <wlr/types/wlr_xcursor_manager.h>
#include <wlr/util/log.h>
@ -1194,7 +1194,7 @@ void roots_seat_set_focus(struct roots_seat *seat, struct roots_view *view) {
* You also cannot alt-tab between layer surfaces and shell surfaces.
*/
void roots_seat_set_focus_layer(struct roots_seat *seat,
struct wlr_layer_surface *layer) {
struct wlr_layer_surface_v1 *layer) {
if (!layer) {
seat->focused_layer = NULL;
return;

View file

@ -31,7 +31,7 @@ lib_wlr_types = static_library(
'wlr_input_device.c',
'wlr_input_inhibitor.c',
'wlr_keyboard.c',
'wlr_layer_shell.c',
'wlr_layer_shell_v1.c',
'wlr_linux_dmabuf_v1.c',
'wlr_list.c',
'wlr_matrix.c',

View file

@ -3,7 +3,7 @@
#include <stdlib.h>
#include <string.h>
#include <wayland-server.h>
#include <wlr/types/wlr_layer_shell.h>
#include <wlr/types/wlr_layer_shell_v1.h>
#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_surface.h>
#include <wlr/types/wlr_xdg_shell.h>
@ -19,14 +19,14 @@ static void resource_handle_destroy(struct wl_client *client,
static const struct zwlr_layer_shell_v1_interface layer_shell_implementation;
static const struct zwlr_layer_surface_v1_interface layer_surface_implementation;
static struct wlr_layer_shell *layer_shell_from_resource(
static struct wlr_layer_shell_v1 *layer_shell_from_resource(
struct wl_resource *resource) {
assert(wl_resource_instance_of(resource, &zwlr_layer_shell_v1_interface,
&layer_shell_implementation));
return wl_resource_get_user_data(resource);
}
static struct wlr_layer_surface *layer_surface_from_resource(
static struct wlr_layer_surface_v1 *layer_surface_from_resource(
struct wl_resource *resource) {
assert(wl_resource_instance_of(resource, &zwlr_layer_surface_v1_interface,
&layer_surface_implementation));
@ -39,14 +39,14 @@ bool wlr_surface_is_layer_surface(struct wlr_surface *surface) {
return surface->role == &layer_surface_role;
}
struct wlr_layer_surface *wlr_layer_surface_from_wlr_surface(
struct wlr_layer_surface_v1 *wlr_layer_surface_v1_from_wlr_surface(
struct wlr_surface *surface) {
assert(wlr_surface_is_layer_surface(surface));
return (struct wlr_layer_surface *)surface->role_data;
return (struct wlr_layer_surface_v1 *)surface->role_data;
}
static void layer_surface_configure_destroy(
struct wlr_layer_surface_configure *configure) {
struct wlr_layer_surface_v1_configure *configure) {
if (configure == NULL) {
return;
}
@ -56,10 +56,10 @@ static void layer_surface_configure_destroy(
static void layer_surface_handle_ack_configure(struct wl_client *client,
struct wl_resource *resource, uint32_t serial) {
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
bool found = false;
struct wlr_layer_surface_configure *configure, *tmp;
struct wlr_layer_surface_v1_configure *configure, *tmp;
wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {
if (configure->serial < serial) {
layer_surface_configure_destroy(configure);
@ -87,7 +87,7 @@ static void layer_surface_handle_ack_configure(struct wl_client *client,
static void layer_surface_handle_set_size(struct wl_client *client,
struct wl_resource *resource, uint32_t width, uint32_t height) {
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
surface->client_pending.desired_width = width;
surface->client_pending.desired_height = height;
}
@ -104,20 +104,20 @@ static void layer_surface_handle_set_anchor(struct wl_client *client,
ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_ANCHOR,
"invalid anchor %d", anchor);
}
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
surface->client_pending.anchor = anchor;
}
static void layer_surface_handle_set_exclusive_zone(struct wl_client *client,
struct wl_resource *resource, int32_t zone) {
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
surface->client_pending.exclusive_zone = zone;
}
static void layer_surface_handle_set_margin(
struct wl_client *client, struct wl_resource *resource,
int32_t top, int32_t right, int32_t bottom, int32_t left) {
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
surface->client_pending.margin.top = top;
surface->client_pending.margin.right = right;
surface->client_pending.margin.bottom = bottom;
@ -127,14 +127,14 @@ static void layer_surface_handle_set_margin(
static void layer_surface_handle_set_keyboard_interactivity(
struct wl_client *client, struct wl_resource *resource,
uint32_t interactive) {
struct wlr_layer_surface *surface = layer_surface_from_resource(resource);
struct wlr_layer_surface_v1 *surface = layer_surface_from_resource(resource);
surface->client_pending.keyboard_interactive = !!interactive;
}
static void layer_surface_handle_get_popup(struct wl_client *client,
struct wl_resource *layer_resource,
struct wl_resource *popup_resource) {
struct wlr_layer_surface *parent =
struct wlr_layer_surface_v1 *parent =
layer_surface_from_resource(layer_resource);
struct wlr_xdg_surface *popup_surface =
wlr_xdg_surface_from_popup_resource(popup_resource);
@ -157,11 +157,11 @@ static const struct zwlr_layer_surface_v1_interface layer_surface_implementation
.get_popup = layer_surface_handle_get_popup,
};
static void layer_surface_unmap(struct wlr_layer_surface *surface) {
static void layer_surface_unmap(struct wlr_layer_surface_v1 *surface) {
// TODO: probably need to ungrab before this event
wlr_signal_emit_safe(&surface->events.unmap, surface);
struct wlr_layer_surface_configure *configure, *tmp;
struct wlr_layer_surface_v1_configure *configure, *tmp;
wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {
layer_surface_configure_destroy(configure);
}
@ -175,7 +175,7 @@ static void layer_surface_unmap(struct wlr_layer_surface *surface) {
surface->configure_next_serial = 0;
}
static void layer_surface_destroy(struct wlr_layer_surface *surface) {
static void layer_surface_destroy(struct wlr_layer_surface_v1 *surface) {
if (surface->configured && surface->mapped) {
layer_surface_unmap(surface);
}
@ -189,15 +189,15 @@ static void layer_surface_destroy(struct wlr_layer_surface *surface) {
}
static void layer_surface_resource_destroy(struct wl_resource *resource) {
struct wlr_layer_surface *surface =
struct wlr_layer_surface_v1 *surface =
layer_surface_from_resource(resource);
if (surface != NULL) {
layer_surface_destroy(surface);
}
}
static bool layer_surface_state_changed(struct wlr_layer_surface *surface) {
struct wlr_layer_surface_state *state;
static bool layer_surface_state_changed(struct wlr_layer_surface_v1 *surface) {
struct wlr_layer_surface_v1_state *state;
if (wl_list_empty(&surface->configure_list)) {
if (surface->acked_configure) {
state = &surface->acked_configure->state;
@ -207,7 +207,7 @@ static bool layer_surface_state_changed(struct wlr_layer_surface *surface) {
state = &surface->current;
}
} else {
struct wlr_layer_surface_configure *configure =
struct wlr_layer_surface_v1_configure *configure =
wl_container_of(surface->configure_list.prev, configure, link);
state = &configure->state;
}
@ -217,15 +217,15 @@ static bool layer_surface_state_changed(struct wlr_layer_surface *surface) {
return changed;
}
void wlr_layer_surface_configure(struct wlr_layer_surface *surface,
void wlr_layer_surface_v1_configure(struct wlr_layer_surface_v1 *surface,
uint32_t width, uint32_t height) {
surface->server_pending.actual_width = width;
surface->server_pending.actual_height = height;
if (layer_surface_state_changed(surface)) {
struct wl_display *display =
wl_client_get_display(wl_resource_get_client(surface->resource));
struct wlr_layer_surface_configure *configure =
calloc(1, sizeof(struct wlr_layer_surface_configure));
struct wlr_layer_surface_v1_configure *configure =
calloc(1, sizeof(struct wlr_layer_surface_v1_configure));
if (configure == NULL) {
wl_client_post_no_memory(wl_resource_get_client(surface->resource));
return;
@ -241,7 +241,7 @@ void wlr_layer_surface_configure(struct wlr_layer_surface *surface,
}
}
void wlr_layer_surface_close(struct wlr_layer_surface *surface) {
void wlr_layer_surface_v1_close(struct wlr_layer_surface_v1 *surface) {
if (surface->closed) {
return;
}
@ -251,8 +251,8 @@ void wlr_layer_surface_close(struct wlr_layer_surface *surface) {
}
static void layer_surface_role_commit(struct wlr_surface *wlr_surface) {
struct wlr_layer_surface *surface =
wlr_layer_surface_from_wlr_surface(wlr_surface);
struct wlr_layer_surface_v1 *surface =
wlr_layer_surface_v1_from_wlr_surface(wlr_surface);
if (surface == NULL) {
return;
}
@ -263,7 +263,7 @@ static void layer_surface_role_commit(struct wlr_surface *wlr_surface) {
}
if (surface->acked_configure) {
struct wlr_layer_surface_configure *configure =
struct wlr_layer_surface_v1_configure *configure =
surface->acked_configure;
surface->configured = true;
surface->configure_serial = configure->serial;
@ -314,7 +314,7 @@ static const struct wlr_surface_role layer_surface_role = {
static void handle_surface_destroyed(struct wl_listener *listener,
void *data) {
struct wlr_layer_surface *layer_surface =
struct wlr_layer_surface_v1 *layer_surface =
wl_container_of(listener, layer_surface, surface_destroy);
layer_surface_destroy(layer_surface);
}
@ -324,13 +324,13 @@ static void layer_shell_handle_get_layer_surface(struct wl_client *wl_client,
struct wl_resource *surface_resource,
struct wl_resource *output_resource,
uint32_t layer, const char *namespace) {
struct wlr_layer_shell *shell =
struct wlr_layer_shell_v1 *shell =
layer_shell_from_resource(client_resource);
struct wlr_surface *wlr_surface =
wlr_surface_from_resource(surface_resource);
struct wlr_layer_surface *surface =
calloc(1, sizeof(struct wlr_layer_surface));
struct wlr_layer_surface_v1 *surface =
calloc(1, sizeof(struct wlr_layer_surface_v1));
if (surface == NULL) {
wl_client_post_no_memory(wl_client);
return;
@ -397,8 +397,8 @@ static const struct zwlr_layer_shell_v1_interface layer_shell_implementation = {
static void client_handle_destroy(struct wl_resource *resource) {
struct wl_client *client = wl_resource_get_client(resource);
struct wlr_layer_shell *shell = layer_shell_from_resource(resource);
struct wlr_layer_surface *surface, *tmp = NULL;
struct wlr_layer_shell_v1 *shell = layer_shell_from_resource(resource);
struct wlr_layer_surface_v1 *surface, *tmp = NULL;
wl_list_for_each_safe(surface, tmp, &shell->surfaces, link) {
if (wl_resource_get_client(surface->resource) == client) {
layer_surface_destroy(surface);
@ -409,7 +409,7 @@ static void client_handle_destroy(struct wl_resource *resource) {
static void layer_shell_bind(struct wl_client *wl_client, void *data,
uint32_t version, uint32_t id) {
struct wlr_layer_shell *layer_shell = data;
struct wlr_layer_shell_v1 *layer_shell = data;
assert(wl_client && layer_shell);
struct wl_resource *resource = wl_resource_create(
@ -420,24 +420,23 @@ static void layer_shell_bind(struct wl_client *wl_client, void *data,
}
wl_resource_set_implementation(resource,
&layer_shell_implementation, layer_shell, client_handle_destroy);
wl_list_insert(&layer_shell->client_resources,
wl_resource_get_link(resource));
wl_list_insert(&layer_shell->resources, wl_resource_get_link(resource));
}
static void handle_display_destroy(struct wl_listener *listener, void *data) {
struct wlr_layer_shell *layer_shell =
struct wlr_layer_shell_v1 *layer_shell =
wl_container_of(listener, layer_shell, display_destroy);
wlr_layer_shell_destroy(layer_shell);
wlr_layer_shell_v1_destroy(layer_shell);
}
struct wlr_layer_shell *wlr_layer_shell_create(struct wl_display *display) {
struct wlr_layer_shell *layer_shell =
calloc(1, sizeof(struct wlr_layer_shell));
struct wlr_layer_shell_v1 *wlr_layer_shell_v1_create(struct wl_display *display) {
struct wlr_layer_shell_v1 *layer_shell =
calloc(1, sizeof(struct wlr_layer_shell_v1));
if (!layer_shell) {
return NULL;
}
wl_list_init(&layer_shell->client_resources);
wl_list_init(&layer_shell->resources);
wl_list_init(&layer_shell->surfaces);
struct wl_global *global = wl_global_create(display,
@ -457,13 +456,13 @@ struct wlr_layer_shell *wlr_layer_shell_create(struct wl_display *display) {
return layer_shell;
}
void wlr_layer_shell_destroy(struct wlr_layer_shell *layer_shell) {
void wlr_layer_shell_v1_destroy(struct wlr_layer_shell_v1 *layer_shell) {
if (!layer_shell) {
return;
}
struct wl_resource *client, *tmp;
wl_resource_for_each_safe(client, tmp, &layer_shell->client_resources) {
wl_resource_destroy(client);
struct wl_resource *resource, *tmp;
wl_resource_for_each_safe(resource, tmp, &layer_shell->resources) {
wl_resource_destroy(resource);
}
wlr_signal_emit_safe(&layer_shell->events.destroy, layer_shell);
wl_list_remove(&layer_shell->display_destroy.link);
@ -511,7 +510,7 @@ static void xdg_surface_for_each_surface(struct wlr_xdg_surface *surface,
}
}
static void layer_surface_for_each_surface(struct wlr_layer_surface *surface,
static void layer_surface_for_each_surface(struct wlr_layer_surface_v1 *surface,
int x, int y, wlr_surface_iterator_func_t iterator, void *user_data) {
struct layer_surface_iterator_data data = {
.user_iterator = iterator,
@ -537,13 +536,13 @@ static void layer_surface_for_each_surface(struct wlr_layer_surface *surface,
}
}
void wlr_layer_surface_for_each_surface(struct wlr_layer_surface *surface,
void wlr_layer_surface_v1_for_each_surface(struct wlr_layer_surface_v1 *surface,
wlr_surface_iterator_func_t iterator, void *user_data) {
layer_surface_for_each_surface(surface, 0, 0, iterator, user_data);
}
struct wlr_surface *wlr_layer_surface_surface_at(
struct wlr_layer_surface *surface, double sx, double sy,
struct wlr_surface *wlr_layer_surface_v1_surface_at(
struct wlr_layer_surface_v1 *surface, double sx, double sy,
double *sub_x, double *sub_y) {
struct wlr_xdg_popup *popup_state;
wl_list_for_each(popup_state, &surface->popups, link) {