aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/env_vars.md2
-rw-r--r--include/rootston/desktop.h4
-rw-r--r--include/rootston/layers.h4
-rw-r--r--include/rootston/seat.h4
-rw-r--r--include/wlr/types/meson.build4
-rw-r--r--include/wlr/types/wlr_layer_shell_v1.h (renamed from include/wlr/types/wlr_layer_shell.h)69
-rw-r--r--include/wlr/types/wlr_xdg_output_v1.h (renamed from include/wlr/types/wlr_xdg_output.h)14
-rw-r--r--rootston/cursor.c4
-rw-r--r--rootston/desktop.c12
-rw-r--r--rootston/layer_shell.c24
-rw-r--r--rootston/output.c6
-rw-r--r--rootston/seat.c4
-rw-r--r--types/meson.build4
-rw-r--r--types/wlr_layer_shell_v1.c (renamed from types/wlr_layer_shell.c)101
-rw-r--r--types/wlr_output.c7
-rw-r--r--types/wlr_xdg_output_v1.c (renamed from types/wlr_xdg_output.c)42
16 files changed, 157 insertions, 148 deletions
diff --git a/docs/env_vars.md b/docs/env_vars.md
index b28849cc..34d91579 100644
--- a/docs/env_vars.md
+++ b/docs/env_vars.md
@@ -14,6 +14,8 @@ wlroots specific
* *WLR_X11_OUTPUTS*: when using the X11 backend specifies the number of outputs
* *WLR_HEADLESS_OUTPUTS*: when using the headless backend specifies the number
of outputs
+* *WLR_NO_HARDWARE_CURSORS*: set to 1 to use software cursors instead of
+ hardware cursors
rootston specific
------------------
diff --git a/include/rootston/desktop.h b/include/rootston/desktop.h
index 3496fb43..89d8af4a 100644
--- a/include/rootston/desktop.h
+++ b/include/rootston/desktop.h
@@ -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;
diff --git a/include/rootston/layers.h b/include/rootston/layers.h
index 9eab53ca..0dacf20f 100644
--- a/include/rootston/layers.h
+++ b/include/rootston/layers.h
@@ -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;
diff --git a/include/rootston/seat.h b/include/rootston/seat.h
index 3ddb97c5..c5e584b6 100644
--- a/include/rootston/seat.h
+++ b/include/rootston/seat.h
@@ -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);
diff --git a/include/wlr/types/meson.build b/include/wlr/types/meson.build
index 8c81cb0e..6a8955c3 100644
--- a/include/wlr/types/meson.build
+++ b/include/wlr/types/meson.build
@@ -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',
@@ -35,7 +35,7 @@ install_headers(
'wlr_wl_shell.h',
'wlr_xcursor_manager.h',
'wlr_xdg_decoration_v1.h',
- 'wlr_xdg_output.h',
+ 'wlr_xdg_output_v1.h',
'wlr_xdg_shell.h',
'wlr_xdg_shell_v6.h',
subdir: 'wlr/types',
diff --git a/include/wlr/types/wlr_layer_shell.h b/include/wlr/types/wlr_layer_shell_v1.h
index c7ddd180..838b2e83 100644
--- a/include/wlr/types/wlr_layer_shell.h
+++ b/include/wlr/types/wlr_layer_shell_v1.h
@@ -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
diff --git a/include/wlr/types/wlr_xdg_output.h b/include/wlr/types/wlr_xdg_output_v1.h
index 60611307..d4279fb9 100644
--- a/include/wlr/types/wlr_xdg_output.h
+++ b/include/wlr/types/wlr_xdg_output_v1.h
@@ -6,13 +6,13 @@
#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features"
#endif
-#ifndef WLR_TYPES_WLR_XDG_OUTPUT_H
-#define WLR_TYPES_WLR_XDG_OUTPUT_H
+#ifndef WLR_TYPES_WLR_XDG_OUTPUT_V1_H
+#define WLR_TYPES_WLR_XDG_OUTPUT_V1_H
#include <wayland-server.h>
#include <wlr/types/wlr_output_layout.h>
-struct wlr_xdg_output {
- struct wlr_xdg_output_manager *manager;
+struct wlr_xdg_output_v1 {
+ struct wlr_xdg_output_manager_v1 *manager;
struct wl_list resources;
struct wl_list link;
@@ -24,7 +24,7 @@ struct wlr_xdg_output {
struct wl_listener destroy;
};
-struct wlr_xdg_output_manager {
+struct wlr_xdg_output_manager_v1 {
struct wl_global *global;
struct wl_list resources;
struct wlr_output_layout *layout;
@@ -40,8 +40,8 @@ struct wlr_xdg_output_manager {
} events;
};
-struct wlr_xdg_output_manager *wlr_xdg_output_manager_create(
+struct wlr_xdg_output_manager_v1 *wlr_xdg_output_manager_v1_create(
struct wl_display *display, struct wlr_output_layout *layout);
-void wlr_xdg_output_manager_destroy(struct wlr_xdg_output_manager *manager);
+void wlr_xdg_output_manager_v1_destroy(struct wlr_xdg_output_manager_v1 *manager);
#endif
diff --git a/rootston/cursor.c b/rootston/cursor.c
index 9a9f9af6..2b8d9a3e 100644
--- a/rootston/cursor.c
+++ b/rootston/cursor.c
@@ -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);
}
diff --git a/rootston/desktop.c b/rootston/desktop.c
index efb7581a..3f6d977e 100644
--- a/rootston/desktop.c
+++ b/rootston/desktop.c
@@ -13,16 +13,16 @@
#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>
#include <wlr/types/wlr_wl_shell.h>
#include <wlr/types/wlr_xcursor_manager.h>
-#include <wlr/types/wlr_xdg_output.h>
+#include <wlr/types/wlr_xdg_output_v1.h>
#include <wlr/types/wlr_xdg_shell_v6.h>
#include <wlr/types/wlr_xdg_shell.h>
-#include <wlr/types/wlr_xdg_output.h>
+#include <wlr/types/wlr_xdg_output_v1.h>
#include <wlr/types/wlr_tablet_v2.h>
#include <wlr/util/log.h>
#include "rootston/layers.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) {
@@ -795,7 +795,7 @@ struct roots_desktop *desktop_create(struct roots_server *server,
desktop->config = config;
desktop->layout = wlr_output_layout_create();
- wlr_xdg_output_manager_create(server->wl_display, desktop->layout);
+ wlr_xdg_output_manager_v1_create(server->wl_display, desktop->layout);
desktop->layout_change.notify = handle_layout_change;
wl_signal_add(&desktop->layout->events.change, &desktop->layout_change);
@@ -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;
diff --git a/rootston/layer_shell.c b/rootston/layer_shell.c
index 39054079..4daa20d1 100644
--- a/rootston/layer_shell.c
+++ b/rootston/layer_shell.c
@@ -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);
diff --git a/rootston/output.c b/rootston/output.c
index 8677f491..4207f0d0 100644
--- a/rootston/output.c
+++ b/rootston/output.c
@@ -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) {
diff --git a/rootston/seat.c b/rootston/seat.c
index 1ae098bc..507254d4 100644
--- a/rootston/seat.c
+++ b/rootston/seat.c
@@ -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;
diff --git a/types/meson.build b/types/meson.build
index 23c6cd13..1329060e 100644
--- a/types/meson.build
+++ b/types/meson.build
@@ -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',
@@ -55,7 +55,7 @@ lib_wlr_types = static_library(
'wlr_wl_shell.c',
'wlr_xcursor_manager.c',
'wlr_xdg_decoration_v1.c',
- 'wlr_xdg_output.c',
+ 'wlr_xdg_output_v1.c',
'wlr_screencopy_v1.c',
),
include_directories: wlr_inc,
diff --git a/types/wlr_layer_shell.c b/types/wlr_layer_shell_v1.c
index 52e5088e..aa959d89 100644
--- a/types/wlr_layer_shell.c
+++ b/types/wlr_layer_shell_v1.c
@@ -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) {
diff --git a/types/wlr_output.c b/types/wlr_output.c
index b864bc6c..4e564534 100644
--- a/types/wlr_output.c
+++ b/types/wlr_output.c
@@ -721,6 +721,13 @@ static bool output_cursor_attempt_hardware(struct wlr_output_cursor *cursor) {
transform = cursor->surface->current.transform;
}
+ const char *no_hardware_cursors = getenv("WLR_NO_HARDWARE_CURSORS");
+ if (no_hardware_cursors != NULL && strcmp(no_hardware_cursors, "1") == 0) {
+ wlr_log(WLR_DEBUG,
+ "WLR_NO_HARDWARE_CURSORS set, forcing software cursors");
+ return false;
+ }
+
struct wlr_output_cursor *hwcur = cursor->output->hardware_cursor;
if (cursor->output->impl->set_cursor && (hwcur == NULL || hwcur == cursor)) {
// If the cursor was hidden or was a software cursor, the hardware
diff --git a/types/wlr_xdg_output.c b/types/wlr_xdg_output_v1.c
index 8c7a1fcb..5e8419ae 100644
--- a/types/wlr_xdg_output.c
+++ b/types/wlr_xdg_output_v1.c
@@ -3,7 +3,7 @@
#include <stdio.h>
#include <wlr/types/wlr_output_layout.h>
#include <wlr/types/wlr_output.h>
-#include <wlr/types/wlr_xdg_output.h>
+#include <wlr/types/wlr_xdg_output_v1.h>
#include <wlr/util/log.h>
#include "xdg-output-unstable-v1-protocol.h"
#include "util/signal.h"
@@ -23,7 +23,7 @@ static void output_handle_resource_destroy(struct wl_resource *resource) {
wl_list_remove(wl_resource_get_link(resource));
}
-static void output_send_details(struct wlr_xdg_output *xdg_output,
+static void output_send_details(struct wlr_xdg_output_v1 *xdg_output,
struct wl_resource *resource) {
struct wlr_output *output = xdg_output->layout_output->output;
@@ -46,7 +46,7 @@ static void output_send_details(struct wlr_xdg_output *xdg_output,
zxdg_output_v1_send_done(resource);
}
-static void output_update(struct wlr_xdg_output *xdg_output) {
+static void output_update(struct wlr_xdg_output_v1 *xdg_output) {
struct wlr_output_layout_output *layout_output = xdg_output->layout_output;
bool updated = false;
@@ -72,7 +72,7 @@ static void output_update(struct wlr_xdg_output *xdg_output) {
}
}
-static void output_destroy(struct wlr_xdg_output *output) {
+static void output_destroy(struct wlr_xdg_output_v1 *output) {
struct wl_resource *resource, *tmp;
wl_resource_for_each_safe(resource, tmp, &output->resources) {
wl_list_remove(wl_resource_get_link(resource));
@@ -98,7 +98,7 @@ static void output_manager_handle_get_xdg_output(struct wl_client *client,
assert(wl_resource_instance_of(resource, &zxdg_output_manager_v1_interface,
&output_manager_implementation));
- struct wlr_xdg_output_manager *manager =
+ struct wlr_xdg_output_manager_v1 *manager =
wl_resource_get_user_data(resource);
struct wlr_output_layout *layout = manager->layout;
struct wlr_output *output = wlr_output_from_resource(output_resource);
@@ -107,7 +107,7 @@ static void output_manager_handle_get_xdg_output(struct wl_client *client,
wlr_output_layout_get(layout, output);
assert(layout_output);
- struct wlr_xdg_output *_xdg_output, *xdg_output = NULL;
+ struct wlr_xdg_output_v1 *_xdg_output, *xdg_output = NULL;
wl_list_for_each(_xdg_output, &manager->outputs, link) {
if (_xdg_output->layout_output == layout_output) {
xdg_output = _xdg_output;
@@ -144,7 +144,7 @@ static void output_manager_handle_resource_destroy(
static void output_manager_bind(struct wl_client *wl_client, void *data,
uint32_t version, uint32_t id) {
- struct wlr_xdg_output_manager *manager = data;
+ struct wlr_xdg_output_manager_v1 *manager = data;
struct wl_resource *resource = wl_resource_create(wl_client,
&zxdg_output_manager_v1_interface, version, id);
@@ -158,13 +158,13 @@ static void output_manager_bind(struct wl_client *wl_client, void *data,
}
static void handle_output_destroy(struct wl_listener *listener, void *data) {
- struct wlr_xdg_output *output = wl_container_of(listener, output, destroy);
+ struct wlr_xdg_output_v1 *output = wl_container_of(listener, output, destroy);
output_destroy(output);
}
-static void add_output(struct wlr_xdg_output_manager *manager,
+static void add_output(struct wlr_xdg_output_manager_v1 *manager,
struct wlr_output_layout_output *layout_output) {
- struct wlr_xdg_output *output = calloc(1, sizeof(struct wlr_xdg_output));
+ struct wlr_xdg_output_v1 *output = calloc(1, sizeof(struct wlr_xdg_output_v1));
if (output == NULL) {
return;
}
@@ -178,37 +178,37 @@ static void add_output(struct wlr_xdg_output_manager *manager,
}
static void output_manager_send_details(
- struct wlr_xdg_output_manager *manager) {
- struct wlr_xdg_output *output;
+ struct wlr_xdg_output_manager_v1 *manager) {
+ struct wlr_xdg_output_v1 *output;
wl_list_for_each(output, &manager->outputs, link) {
output_update(output);
}
}
static void handle_layout_add(struct wl_listener *listener, void *data) {
- struct wlr_xdg_output_manager *manager =
+ struct wlr_xdg_output_manager_v1 *manager =
wl_container_of(listener, manager, layout_add);
struct wlr_output_layout_output *layout_output = data;
add_output(manager, layout_output);
}
static void handle_layout_change(struct wl_listener *listener, void *data) {
- struct wlr_xdg_output_manager *manager =
+ struct wlr_xdg_output_manager_v1 *manager =
wl_container_of(listener, manager, layout_change);
output_manager_send_details(manager);
}
static void handle_layout_destroy(struct wl_listener *listener, void *data) {
- struct wlr_xdg_output_manager *manager =
+ struct wlr_xdg_output_manager_v1 *manager =
wl_container_of(listener, manager, layout_destroy);
- wlr_xdg_output_manager_destroy(manager);
+ wlr_xdg_output_manager_v1_destroy(manager);
}
-struct wlr_xdg_output_manager *wlr_xdg_output_manager_create(
+struct wlr_xdg_output_manager_v1 *wlr_xdg_output_manager_v1_create(
struct wl_display *display, struct wlr_output_layout *layout) {
assert(display && layout);
- struct wlr_xdg_output_manager *manager =
- calloc(1, sizeof(struct wlr_xdg_output_manager));
+ struct wlr_xdg_output_manager_v1 *manager =
+ calloc(1, sizeof(struct wlr_xdg_output_manager_v1));
if (manager == NULL) {
return NULL;
}
@@ -239,8 +239,8 @@ struct wlr_xdg_output_manager *wlr_xdg_output_manager_create(
return manager;
}
-void wlr_xdg_output_manager_destroy(struct wlr_xdg_output_manager *manager) {
- struct wlr_xdg_output *output, *output_tmp;
+void wlr_xdg_output_manager_v1_destroy(struct wlr_xdg_output_manager_v1 *manager) {
+ struct wlr_xdg_output_v1 *output, *output_tmp;
wl_list_for_each_safe(output, output_tmp, &manager->outputs, link) {
output_destroy(output);
}