aboutsummaryrefslogtreecommitdiffstats
path: root/sway/server.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2017-10-22 10:37:30 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2017-11-11 09:08:50 -0500
commit7c448b408126aef0561be0761871f968921d7db0 (patch)
tree055716519b975eca17b2e27254217acd1b801c20 /sway/server.c
parentFind and link to wlroots (diff)
downloadsway-7c448b408126aef0561be0761871f968921d7db0.tar.gz
sway-7c448b408126aef0561be0761871f968921d7db0.tar.zst
sway-7c448b408126aef0561be0761871f968921d7db0.zip
Fire up the wlroots backend and run the event loop
Diffstat (limited to 'sway/server.c')
-rw-r--r--sway/server.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/sway/server.c b/sway/server.c
new file mode 100644
index 00000000..39fa5d28
--- /dev/null
+++ b/sway/server.c
@@ -0,0 +1,54 @@
1#define _POSIX_C_SOURCE 200112L
2#include <stdlib.h>
3#include <stdbool.h>
4#include <wayland-server.h>
5#include <wlr/backend.h>
6#include <wlr/backend/session.h>
7#include <wlr/types/wlr_data_device_manager.h>
8#include <wlr/render.h>
9#include <wlr/render/gles2.h>
10// TODO WLR: make Xwayland optional
11#include <wlr/xwayland.h>
12#include "sway/server.h"
13#include "log.h"
14
15bool server_init(struct sway_server *server) {
16 sway_log(L_DEBUG, "Initializing Wayland server");
17
18 server->wl_display = wl_display_create();
19 server->wl_event_loop = wl_display_get_event_loop(server->wl_display);
20 server->backend = wlr_backend_autocreate(server->wl_display);
21
22 server->renderer = wlr_gles2_renderer_create(server->backend);
23 wl_display_init_shm(server->wl_display);
24
25 // TODO WLR
26 //server->desktop = desktop_create(server, server.config);
27 //server->input = input_create(&server, server.config);
28 server->data_device_manager =
29 wlr_data_device_manager_create(server->wl_display);
30
31 const char *socket = wl_display_add_socket_auto(server->wl_display);
32 if (!socket) {
33 sway_log_errno(L_ERROR, "Unable to open wayland socket");
34 wlr_backend_destroy(server->backend);
35 return false;
36 }
37
38 sway_log(L_INFO, "Running compositor on wayland display '%s'", socket);
39 setenv("_WAYLAND_DISPLAY", socket, true);
40
41 if (!wlr_backend_start(server->backend)) {
42 sway_log(L_ERROR, "Failed to start backend");
43 wlr_backend_destroy(server->backend);
44 return false;
45 }
46
47 setenv("WAYLAND_DISPLAY", socket, true);
48 return true;
49}
50
51void server_fini(struct sway_server *server) {
52 // TODO WLR: tear down more stuff
53 wlr_backend_destroy(server->backend);
54}