summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Simon Ser <contact@emersion.fr>2021-12-09 15:55:58 +0100
committerLibravatar Simon Zeni <simon@bl4ckb0ne.ca>2021-12-09 10:47:01 -0600
commit3f58f12617ca4d6a311d060081e40bf01a73c239 (patch)
tree16f1da9d83f9bbd9b5c973a9891057074595d896
parentreadme: use right-to-left marks in ir translation (diff)
downloadsway-3f58f12617ca4d6a311d060081e40bf01a73c239.tar.gz
sway-3f58f12617ca4d6a311d060081e40bf01a73c239.tar.zst
sway-3f58f12617ca4d6a311d060081e40bf01a73c239.zip
Fixup headless output names
We use the headless backend to create a special fallback output used when no other output is connected. However this messes up the "real" headless output names users have come to expect (e.g. currently the first headless output will be named "HEADLESS-2" instead of "HEADLESS-1"). Fix this by setting the output name with [1]. [1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/3395
-rw-r--r--sway/desktop/output.c10
-rw-r--r--sway/server.c1
2 files changed, 11 insertions, 0 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index e0d76349..3ae97e66 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -5,6 +5,7 @@
5#include <time.h> 5#include <time.h>
6#include <wayland-server-core.h> 6#include <wayland-server-core.h>
7#include <wlr/backend/drm.h> 7#include <wlr/backend/drm.h>
8#include <wlr/backend/headless.h>
8#include <wlr/render/wlr_renderer.h> 9#include <wlr/render/wlr_renderer.h>
9#include <wlr/types/wlr_buffer.h> 10#include <wlr/types/wlr_buffer.h>
10#include <wlr/types/wlr_drm_lease_v1.h> 11#include <wlr/types/wlr_drm_lease_v1.h>
@@ -833,13 +834,22 @@ static void handle_present(struct wl_listener *listener, void *data) {
833 output->refresh_nsec = output_event->refresh; 834 output->refresh_nsec = output_event->refresh;
834} 835}
835 836
837static unsigned int last_headless_num = 0;
838
836void handle_new_output(struct wl_listener *listener, void *data) { 839void handle_new_output(struct wl_listener *listener, void *data) {
837 struct sway_server *server = wl_container_of(listener, server, new_output); 840 struct sway_server *server = wl_container_of(listener, server, new_output);
838 struct wlr_output *wlr_output = data; 841 struct wlr_output *wlr_output = data;
842
839 if (wlr_output == root->fallback_output->wlr_output) { 843 if (wlr_output == root->fallback_output->wlr_output) {
840 return; 844 return;
841 } 845 }
842 846
847 if (wlr_output_is_headless(wlr_output)) {
848 char name[64];
849 snprintf(name, sizeof(name), "HEADLESS-%u", ++last_headless_num);
850 wlr_output_set_name(wlr_output, name);
851 }
852
843 sway_log(SWAY_DEBUG, "New output %p: %s (non-desktop: %d)", 853 sway_log(SWAY_DEBUG, "New output %p: %s (non-desktop: %d)",
844 wlr_output, wlr_output->name, wlr_output->non_desktop); 854 wlr_output, wlr_output->name, wlr_output->non_desktop);
845 855
diff --git a/sway/server.c b/sway/server.c
index ff269c79..582a04ab 100644
--- a/sway/server.c
+++ b/sway/server.c
@@ -227,6 +227,7 @@ bool server_init(struct sway_server *server) {
227 227
228 struct wlr_output *wlr_output = 228 struct wlr_output *wlr_output =
229 wlr_headless_add_output(server->headless_backend, 800, 600); 229 wlr_headless_add_output(server->headless_backend, 800, 600);
230 wlr_output_set_name(wlr_output, "FALLBACK");
230 root->fallback_output = output_create(wlr_output); 231 root->fallback_output = output_create(wlr_output);
231 232
232 // This may have been set already via -Dtxn-timeout 233 // This may have been set already via -Dtxn-timeout