diff options
-rw-r--r-- | docs/env_vars.md | 2 | ||||
-rw-r--r-- | include/rootston/desktop.h | 4 | ||||
-rw-r--r-- | include/rootston/layers.h | 4 | ||||
-rw-r--r-- | include/rootston/seat.h | 4 | ||||
-rw-r--r-- | include/wlr/types/meson.build | 4 | ||||
-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.c | 4 | ||||
-rw-r--r-- | rootston/desktop.c | 12 | ||||
-rw-r--r-- | rootston/layer_shell.c | 24 | ||||
-rw-r--r-- | rootston/output.c | 6 | ||||
-rw-r--r-- | rootston/seat.c | 4 | ||||
-rw-r--r-- | types/meson.build | 4 | ||||
-rw-r--r-- | types/wlr_layer_shell_v1.c (renamed from types/wlr_layer_shell.c) | 101 | ||||
-rw-r--r-- | types/wlr_output.c | 7 | ||||
-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); } |