diff options
-rw-r--r-- | docs/env_vars.md | 2 | ||||
-rw-r--r-- | include/wlr/types/meson.build | 2 | ||||
-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/desktop.c | 6 | ||||
-rw-r--r-- | types/meson.build | 2 | ||||
-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 |
7 files changed, 42 insertions, 33 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/wlr/types/meson.build b/include/wlr/types/meson.build index 8f44259e..6a8955c3 100644 --- a/include/wlr/types/meson.build +++ b/include/wlr/types/meson.build @@ -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_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/desktop.c b/rootston/desktop.c index 39d25d1b..3f6d977e 100644 --- a/rootston/desktop.c +++ b/rootston/desktop.c @@ -19,10 +19,10 @@ #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" @@ -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); diff --git a/types/meson.build b/types/meson.build index dc1fbe7b..1329060e 100644 --- a/types/meson.build +++ b/types/meson.build @@ -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_output.c b/types/wlr_output.c index abbdab9c..3a911f4b 100644 --- a/types/wlr_output.c +++ b/types/wlr_output.c @@ -720,6 +720,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); } |