Merge pull request #1243 from emersion/layer-shell-suffix

layer-shell: add _v1 suffix
This commit is contained in:
Drew DeVault 2018-09-14 20:47:42 -04:00 committed by GitHub
commit 0210905eef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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_inhibit_v1.h>
#include <wlr/types/wlr_idle.h> #include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_input_inhibitor.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_list.h>
#include <wlr/types/wlr_output_layout.h> #include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_output.h> #include <wlr/types/wlr_output.h>
@ -52,7 +52,7 @@ struct roots_desktop {
struct wlr_idle *idle; struct wlr_idle *idle;
struct wlr_idle_inhibit_manager_v1 *idle_inhibit; struct wlr_idle_inhibit_manager_v1 *idle_inhibit;
struct wlr_input_inhibit_manager *input_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_virtual_keyboard_manager_v1 *virtual_keyboard;
struct wlr_screencopy_manager_v1 *screencopy; struct wlr_screencopy_manager_v1 *screencopy;
struct wlr_tablet_manager_v2 *tablet_v2; struct wlr_tablet_manager_v2 *tablet_v2;

View File

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

View File

@ -17,7 +17,7 @@ struct roots_seat {
double touch_x, touch_y; double touch_x, touch_y;
// If the focused layer is set, views cannot receive keyboard focus // 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 // If non-null, only this client can receive input events
struct wl_client *exclusive_client; 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(struct roots_seat *seat, struct roots_view *view);
void roots_seat_set_focus_layer(struct roots_seat *seat, 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); void roots_seat_cycle_focus(struct roots_seat *seat);

View File

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

View File

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

View File

@ -275,8 +275,8 @@ static void roots_cursor_press_button(struct roots_cursor *cursor,
roots_seat_set_focus(seat, view); roots_seat_set_focus(seat, view);
} }
if (surface && wlr_surface_is_layer_surface(surface)) { if (surface && wlr_surface_is_layer_surface(surface)) {
struct wlr_layer_surface *layer = struct wlr_layer_surface_v1 *layer =
wlr_layer_surface_from_wlr_surface(surface); wlr_layer_surface_v1_from_wlr_surface(surface);
if (layer->current.keyboard_interactive) { if (layer->current.keyboard_interactive) {
roots_seat_set_focus_layer(seat, layer); 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_inhibit_v1.h>
#include <wlr/types/wlr_idle.h> #include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_input_inhibitor.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_output_layout.h>
#include <wlr/types/wlr_primary_selection.h> #include <wlr/types/wlr_primary_selection.h>
#include <wlr/types/wlr_server_decoration.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 _sx = ox - roots_surface->geo.x;
double _sy = oy - roots_surface->geo.y; 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); roots_surface->layer_surface, _sx, _sy, sx, sy);
if (sub) { if (sub) {
@ -817,7 +817,7 @@ struct roots_desktop *desktop_create(struct roots_server *server,
&desktop->wl_shell_surface); &desktop->wl_shell_surface);
desktop->wl_shell_surface.notify = handle_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, wl_signal_add(&desktop->layer_shell->events.new_surface,
&desktop->layer_shell_surface); &desktop->layer_shell_surface);
desktop->layer_shell_surface.notify = handle_layer_shell_surface; desktop->layer_shell_surface.notify = handle_layer_shell_surface;

View File

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

View File

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

View File

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

View File

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

View File

@ -3,7 +3,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <wayland-server.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_output.h>
#include <wlr/types/wlr_surface.h> #include <wlr/types/wlr_surface.h>
#include <wlr/types/wlr_xdg_shell.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_shell_v1_interface layer_shell_implementation;
static const struct zwlr_layer_surface_v1_interface layer_surface_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) { struct wl_resource *resource) {
assert(wl_resource_instance_of(resource, &zwlr_layer_shell_v1_interface, assert(wl_resource_instance_of(resource, &zwlr_layer_shell_v1_interface,
&layer_shell_implementation)); &layer_shell_implementation));
return wl_resource_get_user_data(resource); 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) { struct wl_resource *resource) {
assert(wl_resource_instance_of(resource, &zwlr_layer_surface_v1_interface, assert(wl_resource_instance_of(resource, &zwlr_layer_surface_v1_interface,
&layer_surface_implementation)); &layer_surface_implementation));
@ -39,14 +39,14 @@ bool wlr_surface_is_layer_surface(struct wlr_surface *surface) {
return surface->role == &layer_surface_role; 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) { struct wlr_surface *surface) {
assert(wlr_surface_is_layer_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( static void layer_surface_configure_destroy(
struct wlr_layer_surface_configure *configure) { struct wlr_layer_surface_v1_configure *configure) {
if (configure == NULL) { if (configure == NULL) {
return; return;
} }
@ -56,10 +56,10 @@ static void layer_surface_configure_destroy(
static void layer_surface_handle_ack_configure(struct wl_client *client, static void layer_surface_handle_ack_configure(struct wl_client *client,
struct wl_resource *resource, uint32_t serial) { 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; 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) { wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {
if (configure->serial < serial) { if (configure->serial < serial) {
layer_surface_configure_destroy(configure); 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, static void layer_surface_handle_set_size(struct wl_client *client,
struct wl_resource *resource, uint32_t width, uint32_t height) { 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_width = width;
surface->client_pending.desired_height = height; 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, ZWLR_LAYER_SURFACE_V1_ERROR_INVALID_ANCHOR,
"invalid anchor %d", 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; surface->client_pending.anchor = anchor;
} }
static void layer_surface_handle_set_exclusive_zone(struct wl_client *client, static void layer_surface_handle_set_exclusive_zone(struct wl_client *client,
struct wl_resource *resource, int32_t zone) { 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; surface->client_pending.exclusive_zone = zone;
} }
static void layer_surface_handle_set_margin( static void layer_surface_handle_set_margin(
struct wl_client *client, struct wl_resource *resource, struct wl_client *client, struct wl_resource *resource,
int32_t top, int32_t right, int32_t bottom, int32_t left) { 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.top = top;
surface->client_pending.margin.right = right; surface->client_pending.margin.right = right;
surface->client_pending.margin.bottom = bottom; 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( static void layer_surface_handle_set_keyboard_interactivity(
struct wl_client *client, struct wl_resource *resource, struct wl_client *client, struct wl_resource *resource,
uint32_t interactive) { 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; surface->client_pending.keyboard_interactive = !!interactive;
} }
static void layer_surface_handle_get_popup(struct wl_client *client, static void layer_surface_handle_get_popup(struct wl_client *client,
struct wl_resource *layer_resource, struct wl_resource *layer_resource,
struct wl_resource *popup_resource) { struct wl_resource *popup_resource) {
struct wlr_layer_surface *parent = struct wlr_layer_surface_v1 *parent =
layer_surface_from_resource(layer_resource); layer_surface_from_resource(layer_resource);
struct wlr_xdg_surface *popup_surface = struct wlr_xdg_surface *popup_surface =
wlr_xdg_surface_from_popup_resource(popup_resource); 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, .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 // TODO: probably need to ungrab before this event
wlr_signal_emit_safe(&surface->events.unmap, surface); 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) { wl_list_for_each_safe(configure, tmp, &surface->configure_list, link) {
layer_surface_configure_destroy(configure); layer_surface_configure_destroy(configure);
} }
@ -175,7 +175,7 @@ static void layer_surface_unmap(struct wlr_layer_surface *surface) {
surface->configure_next_serial = 0; 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) { if (surface->configured && surface->mapped) {
layer_surface_unmap(surface); 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) { 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); layer_surface_from_resource(resource);
if (surface != NULL) { if (surface != NULL) {
layer_surface_destroy(surface); layer_surface_destroy(surface);
} }
} }
static bool layer_surface_state_changed(struct wlr_layer_surface *surface) { static bool layer_surface_state_changed(struct wlr_layer_surface_v1 *surface) {
struct wlr_layer_surface_state *state; struct wlr_layer_surface_v1_state *state;
if (wl_list_empty(&surface->configure_list)) { if (wl_list_empty(&surface->configure_list)) {
if (surface->acked_configure) { if (surface->acked_configure) {
state = &surface->acked_configure->state; state = &surface->acked_configure->state;
@ -207,7 +207,7 @@ static bool layer_surface_state_changed(struct wlr_layer_surface *surface) {
state = &surface->current; state = &surface->current;
} }
} else { } else {
struct wlr_layer_surface_configure *configure = struct wlr_layer_surface_v1_configure *configure =
wl_container_of(surface->configure_list.prev, configure, link); wl_container_of(surface->configure_list.prev, configure, link);
state = &configure->state; state = &configure->state;
} }
@ -217,15 +217,15 @@ static bool layer_surface_state_changed(struct wlr_layer_surface *surface) {
return changed; 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) { uint32_t width, uint32_t height) {
surface->server_pending.actual_width = width; surface->server_pending.actual_width = width;
surface->server_pending.actual_height = height; surface->server_pending.actual_height = height;
if (layer_surface_state_changed(surface)) { if (layer_surface_state_changed(surface)) {
struct wl_display *display = struct wl_display *display =
wl_client_get_display(wl_resource_get_client(surface->resource)); wl_client_get_display(wl_resource_get_client(surface->resource));
struct wlr_layer_surface_configure *configure = struct wlr_layer_surface_v1_configure *configure =
calloc(1, sizeof(struct wlr_layer_surface_configure)); calloc(1, sizeof(struct wlr_layer_surface_v1_configure));
if (configure == NULL) { if (configure == NULL) {
wl_client_post_no_memory(wl_resource_get_client(surface->resource)); wl_client_post_no_memory(wl_resource_get_client(surface->resource));
return; 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) { if (surface->closed) {
return; 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) { static void layer_surface_role_commit(struct wlr_surface *wlr_surface) {
struct wlr_layer_surface *surface = struct wlr_layer_surface_v1 *surface =
wlr_layer_surface_from_wlr_surface(wlr_surface); wlr_layer_surface_v1_from_wlr_surface(wlr_surface);
if (surface == NULL) { if (surface == NULL) {
return; return;
} }
@ -263,7 +263,7 @@ static void layer_surface_role_commit(struct wlr_surface *wlr_surface) {
} }
if (surface->acked_configure) { if (surface->acked_configure) {
struct wlr_layer_surface_configure *configure = struct wlr_layer_surface_v1_configure *configure =
surface->acked_configure; surface->acked_configure;
surface->configured = true; surface->configured = true;
surface->configure_serial = configure->serial; 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, static void handle_surface_destroyed(struct wl_listener *listener,
void *data) { void *data) {
struct wlr_layer_surface *layer_surface = struct wlr_layer_surface_v1 *layer_surface =
wl_container_of(listener, layer_surface, surface_destroy); wl_container_of(listener, layer_surface, surface_destroy);
layer_surface_destroy(layer_surface); 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 *surface_resource,
struct wl_resource *output_resource, struct wl_resource *output_resource,
uint32_t layer, const char *namespace) { uint32_t layer, const char *namespace) {
struct wlr_layer_shell *shell = struct wlr_layer_shell_v1 *shell =
layer_shell_from_resource(client_resource); layer_shell_from_resource(client_resource);
struct wlr_surface *wlr_surface = struct wlr_surface *wlr_surface =
wlr_surface_from_resource(surface_resource); wlr_surface_from_resource(surface_resource);
struct wlr_layer_surface *surface = struct wlr_layer_surface_v1 *surface =
calloc(1, sizeof(struct wlr_layer_surface)); calloc(1, sizeof(struct wlr_layer_surface_v1));
if (surface == NULL) { if (surface == NULL) {
wl_client_post_no_memory(wl_client); wl_client_post_no_memory(wl_client);
return; 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) { static void client_handle_destroy(struct wl_resource *resource) {
struct wl_client *client = wl_resource_get_client(resource); struct wl_client *client = wl_resource_get_client(resource);
struct wlr_layer_shell *shell = layer_shell_from_resource(resource); struct wlr_layer_shell_v1 *shell = layer_shell_from_resource(resource);
struct wlr_layer_surface *surface, *tmp = NULL; struct wlr_layer_surface_v1 *surface, *tmp = NULL;
wl_list_for_each_safe(surface, tmp, &shell->surfaces, link) { wl_list_for_each_safe(surface, tmp, &shell->surfaces, link) {
if (wl_resource_get_client(surface->resource) == client) { if (wl_resource_get_client(surface->resource) == client) {
layer_surface_destroy(surface); 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, static void layer_shell_bind(struct wl_client *wl_client, void *data,
uint32_t version, uint32_t id) { 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); assert(wl_client && layer_shell);
struct wl_resource *resource = wl_resource_create( 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, wl_resource_set_implementation(resource,
&layer_shell_implementation, layer_shell, client_handle_destroy); &layer_shell_implementation, layer_shell, client_handle_destroy);
wl_list_insert(&layer_shell->client_resources, wl_list_insert(&layer_shell->resources, wl_resource_get_link(resource));
wl_resource_get_link(resource));
} }
static void handle_display_destroy(struct wl_listener *listener, void *data) { 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); 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_v1 *wlr_layer_shell_v1_create(struct wl_display *display) {
struct wlr_layer_shell *layer_shell = struct wlr_layer_shell_v1 *layer_shell =
calloc(1, sizeof(struct wlr_layer_shell)); calloc(1, sizeof(struct wlr_layer_shell_v1));
if (!layer_shell) { if (!layer_shell) {
return NULL; return NULL;
} }
wl_list_init(&layer_shell->client_resources); wl_list_init(&layer_shell->resources);
wl_list_init(&layer_shell->surfaces); wl_list_init(&layer_shell->surfaces);
struct wl_global *global = wl_global_create(display, 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; 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) { if (!layer_shell) {
return; return;
} }
struct wl_resource *client, *tmp; struct wl_resource *resource, *tmp;
wl_resource_for_each_safe(client, tmp, &layer_shell->client_resources) { wl_resource_for_each_safe(resource, tmp, &layer_shell->resources) {
wl_resource_destroy(client); wl_resource_destroy(resource);
} }
wlr_signal_emit_safe(&layer_shell->events.destroy, layer_shell); wlr_signal_emit_safe(&layer_shell->events.destroy, layer_shell);
wl_list_remove(&layer_shell->display_destroy.link); 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) { int x, int y, wlr_surface_iterator_func_t iterator, void *user_data) {
struct layer_surface_iterator_data data = { struct layer_surface_iterator_data data = {
.user_iterator = iterator, .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) { wlr_surface_iterator_func_t iterator, void *user_data) {
layer_surface_for_each_surface(surface, 0, 0, iterator, user_data); layer_surface_for_each_surface(surface, 0, 0, iterator, user_data);
} }
struct wlr_surface *wlr_layer_surface_surface_at( struct wlr_surface *wlr_layer_surface_v1_surface_at(
struct wlr_layer_surface *surface, double sx, double sy, struct wlr_layer_surface_v1 *surface, double sx, double sy,
double *sub_x, double *sub_y) { double *sub_x, double *sub_y) {
struct wlr_xdg_popup *popup_state; struct wlr_xdg_popup *popup_state;
wl_list_for_each(popup_state, &surface->popups, link) { wl_list_for_each(popup_state, &surface->popups, link) {