summaryrefslogtreecommitdiff
path: root/sway/server.c
diff options
context:
space:
mode:
authorWilliam McKinnon <[email protected]>2022-04-26 21:44:51 -0400
committerGitHub <[email protected]>2022-04-26 21:44:51 -0400
commit4660771f6a25b93062df0698634059f893ae1999 (patch)
treeb7135d20119a42d8381fb65004f476750d6212fd /sway/server.c
parentccda4dae0f9b77b9760d6fdf178e0f0e2571cde0 (diff)
parent5543acff06981639086bc9a0fc9b608796a23e84 (diff)
Merge pull request #1 from swaywm/v1.7
V1.7
Diffstat (limited to 'sway/server.c')
-rw-r--r--sway/server.c47
1 files changed, 33 insertions, 14 deletions
diff --git a/sway/server.c b/sway/server.c
index b187fcd5..f50a0987 100644
--- a/sway/server.c
+++ b/sway/server.c
@@ -7,17 +7,18 @@
#include <wlr/backend.h>
#include <wlr/backend/headless.h>
#include <wlr/backend/multi.h>
-#include <wlr/backend/noop.h>
#include <wlr/backend/session.h>
#include <wlr/config.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_compositor.h>
#include <wlr/types/wlr_data_control_v1.h>
#include <wlr/types/wlr_drm_lease_v1.h>
+#include <wlr/types/wlr_drm.h>
#include <wlr/types/wlr_export_dmabuf_v1.h>
#include <wlr/types/wlr_gamma_control_v1.h>
#include <wlr/types/wlr_idle.h>
#include <wlr/types/wlr_layer_shell_v1.h>
+#include <wlr/types/wlr_linux_dmabuf_v1.h>
#include <wlr/types/wlr_pointer_constraints_v1.h>
#include <wlr/types/wlr_primary_selection_v1.h>
#include <wlr/types/wlr_relative_pointer_v1.h>
@@ -73,12 +74,29 @@ static void handle_drm_lease_request(struct wl_listener *listener, void *data) {
bool server_init(struct sway_server *server) {
sway_log(SWAY_DEBUG, "Initializing Wayland server");
- struct wlr_renderer *renderer = wlr_backend_get_renderer(server->backend);
- assert(renderer);
+ server->renderer = wlr_renderer_autocreate(server->backend);
+ if (!server->renderer) {
+ sway_log(SWAY_ERROR, "Failed to create renderer");
+ return false;
+ }
- wlr_renderer_init_wl_display(renderer, server->wl_display);
+ wlr_renderer_init_wl_shm(server->renderer, server->wl_display);
+
+ if (wlr_renderer_get_dmabuf_texture_formats(server->renderer) != NULL) {
+ wlr_drm_create(server->wl_display, server->renderer);
+ server->linux_dmabuf_v1 =
+ wlr_linux_dmabuf_v1_create(server->wl_display, server->renderer);
+ }
+
+ server->allocator = wlr_allocator_autocreate(server->backend,
+ server->renderer);
+ if (!server->allocator) {
+ sway_log(SWAY_ERROR, "Failed to create allocator");
+ return false;
+ }
- server->compositor = wlr_compositor_create(server->wl_display, renderer);
+ server->compositor = wlr_compositor_create(server->wl_display,
+ server->renderer);
server->compositor_new_surface.notify = handle_compositor_new_surface;
wl_signal_add(&server->compositor->events.new_surface,
&server->compositor_new_surface);
@@ -206,20 +224,20 @@ bool server_init(struct sway_server *server) {
return false;
}
- server->noop_backend = wlr_noop_backend_create(server->wl_display);
-
- struct wlr_output *wlr_output = wlr_noop_add_output(server->noop_backend);
- root->noop_output = output_create(wlr_output);
-
- server->headless_backend =
- wlr_headless_backend_create_with_renderer(server->wl_display, renderer);
+ server->headless_backend = wlr_headless_backend_create(server->wl_display);
if (!server->headless_backend) {
- sway_log(SWAY_INFO, "Failed to create secondary headless backend, "
- "starting without it");
+ sway_log(SWAY_ERROR, "Failed to create secondary headless backend");
+ wlr_backend_destroy(server->backend);
+ return false;
} else {
wlr_multi_backend_add(server->backend, server->headless_backend);
}
+ struct wlr_output *wlr_output =
+ wlr_headless_add_output(server->headless_backend, 800, 600);
+ wlr_output_set_name(wlr_output, "FALLBACK");
+ root->fallback_output = output_create(wlr_output);
+
// This may have been set already via -Dtxn-timeout
if (!server->txn_timeout_ms) {
server->txn_timeout_ms = 200;
@@ -276,6 +294,7 @@ bool server_start(struct sway_server *server) {
wlr_backend_destroy(server->backend);
return false;
}
+
return true;
}