diff options
Diffstat (limited to 'sway/server.c')
-rw-r--r-- | sway/server.c | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/sway/server.c b/sway/server.c index f5700c09..89dfbf8c 100644 --- a/sway/server.c +++ b/sway/server.c | |||
@@ -7,13 +7,13 @@ | |||
7 | #include <wlr/backend/session.h> | 7 | #include <wlr/backend/session.h> |
8 | #include <wlr/render/wlr_renderer.h> | 8 | #include <wlr/render/wlr_renderer.h> |
9 | #include <wlr/types/wlr_compositor.h> | 9 | #include <wlr/types/wlr_compositor.h> |
10 | #include <wlr/types/wlr_export_dmabuf_v1.h> | ||
10 | #include <wlr/types/wlr_gamma_control.h> | 11 | #include <wlr/types/wlr_gamma_control.h> |
11 | #include <wlr/types/wlr_idle.h> | 12 | #include <wlr/types/wlr_idle.h> |
12 | #include <wlr/types/wlr_layer_shell.h> | 13 | #include <wlr/types/wlr_layer_shell.h> |
13 | #include <wlr/types/wlr_linux_dmabuf.h> | 14 | #include <wlr/types/wlr_linux_dmabuf_v1.h> |
14 | #include <wlr/types/wlr_export_dmabuf_v1.h> | ||
15 | #include <wlr/types/wlr_primary_selection.h> | 15 | #include <wlr/types/wlr_primary_selection.h> |
16 | #include <wlr/types/wlr_screenshooter.h> | 16 | #include <wlr/types/wlr_screencopy_v1.h> |
17 | #include <wlr/types/wlr_server_decoration.h> | 17 | #include <wlr/types/wlr_server_decoration.h> |
18 | #include <wlr/types/wlr_xcursor_manager.h> | 18 | #include <wlr/types/wlr_xcursor_manager.h> |
19 | #include <wlr/types/wlr_xdg_output.h> | 19 | #include <wlr/types/wlr_xdg_output.h> |
@@ -21,26 +21,27 @@ | |||
21 | // TODO WLR: make Xwayland optional | 21 | // TODO WLR: make Xwayland optional |
22 | #include "list.h" | 22 | #include "list.h" |
23 | #include "sway/config.h" | 23 | #include "sway/config.h" |
24 | #include "sway/desktop/idle_inhibit_v1.h" | ||
24 | #include "sway/input/input-manager.h" | 25 | #include "sway/input/input-manager.h" |
25 | #include "sway/server.h" | 26 | #include "sway/server.h" |
26 | #include "sway/tree/layout.h" | 27 | #include "sway/tree/layout.h" |
27 | #include "sway/xwayland.h" | 28 | #include "sway/xwayland.h" |
28 | 29 | ||
29 | bool server_privileged_prepare(struct sway_server *server) { | 30 | bool server_privileged_prepare(struct sway_server *server) { |
30 | wlr_log(L_DEBUG, "Preparing Wayland server initialization"); | 31 | wlr_log(WLR_DEBUG, "Preparing Wayland server initialization"); |
31 | server->wl_display = wl_display_create(); | 32 | server->wl_display = wl_display_create(); |
32 | server->wl_event_loop = wl_display_get_event_loop(server->wl_display); | 33 | server->wl_event_loop = wl_display_get_event_loop(server->wl_display); |
33 | server->backend = wlr_backend_autocreate(server->wl_display, NULL); | 34 | server->backend = wlr_backend_autocreate(server->wl_display, NULL); |
34 | 35 | ||
35 | if (!server->backend) { | 36 | if (!server->backend) { |
36 | wlr_log(L_ERROR, "Unable to create backend"); | 37 | wlr_log(WLR_ERROR, "Unable to create backend"); |
37 | return false; | 38 | return false; |
38 | } | 39 | } |
39 | return true; | 40 | return true; |
40 | } | 41 | } |
41 | 42 | ||
42 | bool server_init(struct sway_server *server) { | 43 | bool server_init(struct sway_server *server) { |
43 | wlr_log(L_DEBUG, "Initializing Wayland server"); | 44 | wlr_log(WLR_DEBUG, "Initializing Wayland server"); |
44 | 45 | ||
45 | struct wlr_renderer *renderer = wlr_backend_get_renderer(server->backend); | 46 | struct wlr_renderer *renderer = wlr_backend_get_renderer(server->backend); |
46 | assert(renderer); | 47 | assert(renderer); |
@@ -51,8 +52,6 @@ bool server_init(struct sway_server *server) { | |||
51 | server->data_device_manager = | 52 | server->data_device_manager = |
52 | wlr_data_device_manager_create(server->wl_display); | 53 | wlr_data_device_manager_create(server->wl_display); |
53 | 54 | ||
54 | server->idle = wlr_idle_create(server->wl_display); | ||
55 | wlr_screenshooter_create(server->wl_display); | ||
56 | wlr_gamma_control_manager_create(server->wl_display); | 55 | wlr_gamma_control_manager_create(server->wl_display); |
57 | wlr_primary_selection_device_manager_create(server->wl_display); | 56 | wlr_primary_selection_device_manager_create(server->wl_display); |
58 | 57 | ||
@@ -62,6 +61,10 @@ bool server_init(struct sway_server *server) { | |||
62 | wlr_xdg_output_manager_create(server->wl_display, | 61 | wlr_xdg_output_manager_create(server->wl_display, |
63 | root_container.sway_root->output_layout); | 62 | root_container.sway_root->output_layout); |
64 | 63 | ||
64 | server->idle = wlr_idle_create(server->wl_display); | ||
65 | server->idle_inhibit_manager_v1 = | ||
66 | sway_idle_inhibit_manager_v1_create(server->wl_display, server->idle); | ||
67 | |||
65 | server->layer_shell = wlr_layer_shell_create(server->wl_display); | 68 | server->layer_shell = wlr_layer_shell_create(server->wl_display); |
66 | wl_signal_add(&server->layer_shell->events.new_surface, | 69 | wl_signal_add(&server->layer_shell->events.new_surface, |
67 | &server->layer_shell_surface); | 70 | &server->layer_shell_surface); |
@@ -105,12 +108,13 @@ bool server_init(struct sway_server *server) { | |||
105 | wlr_server_decoration_manager_set_default_mode( | 108 | wlr_server_decoration_manager_set_default_mode( |
106 | deco_manager, WLR_SERVER_DECORATION_MANAGER_MODE_SERVER); | 109 | deco_manager, WLR_SERVER_DECORATION_MANAGER_MODE_SERVER); |
107 | 110 | ||
108 | wlr_linux_dmabuf_create(server->wl_display, renderer); | 111 | wlr_linux_dmabuf_v1_create(server->wl_display, renderer); |
109 | wlr_export_dmabuf_manager_v1_create(server->wl_display); | 112 | wlr_export_dmabuf_manager_v1_create(server->wl_display); |
113 | wlr_screencopy_manager_v1_create(server->wl_display); | ||
110 | 114 | ||
111 | server->socket = wl_display_add_socket_auto(server->wl_display); | 115 | server->socket = wl_display_add_socket_auto(server->wl_display); |
112 | if (!server->socket) { | 116 | if (!server->socket) { |
113 | wlr_log(L_ERROR, "Unable to open wayland socket"); | 117 | wlr_log(WLR_ERROR, "Unable to open wayland socket"); |
114 | wlr_backend_destroy(server->backend); | 118 | wlr_backend_destroy(server->backend); |
115 | return false; | 119 | return false; |
116 | } | 120 | } |
@@ -119,8 +123,7 @@ bool server_init(struct sway_server *server) { | |||
119 | if (debug != NULL && strcmp(debug, "txn_timings") == 0) { | 123 | if (debug != NULL && strcmp(debug, "txn_timings") == 0) { |
120 | server->debug_txn_timings = true; | 124 | server->debug_txn_timings = true; |
121 | } | 125 | } |
122 | server->destroying_containers = create_list(); | 126 | server->dirty_containers = create_list(); |
123 | |||
124 | server->transactions = create_list(); | 127 | server->transactions = create_list(); |
125 | 128 | ||
126 | input_manager = input_manager_create(server); | 129 | input_manager = input_manager_create(server); |
@@ -130,18 +133,23 @@ bool server_init(struct sway_server *server) { | |||
130 | void server_fini(struct sway_server *server) { | 133 | void server_fini(struct sway_server *server) { |
131 | // TODO: free sway-specific resources | 134 | // TODO: free sway-specific resources |
132 | wl_display_destroy(server->wl_display); | 135 | wl_display_destroy(server->wl_display); |
133 | list_free(server->destroying_containers); | 136 | list_free(server->dirty_containers); |
134 | list_free(server->transactions); | 137 | list_free(server->transactions); |
135 | } | 138 | } |
136 | 139 | ||
137 | void server_run(struct sway_server *server) { | 140 | bool server_start_backend(struct sway_server *server) { |
138 | wlr_log(L_INFO, "Running compositor on wayland display '%s'", | 141 | wlr_log(WLR_INFO, "Starting backend on wayland display '%s'", |
139 | server->socket); | 142 | server->socket); |
140 | setenv("WAYLAND_DISPLAY", server->socket, true); | ||
141 | if (!wlr_backend_start(server->backend)) { | 143 | if (!wlr_backend_start(server->backend)) { |
142 | wlr_log(L_ERROR, "Failed to start backend"); | 144 | wlr_log(WLR_ERROR, "Failed to start backend"); |
143 | wlr_backend_destroy(server->backend); | 145 | wlr_backend_destroy(server->backend); |
144 | return; | 146 | return false; |
145 | } | 147 | } |
148 | return true; | ||
149 | } | ||
150 | |||
151 | void server_run(struct sway_server *server) { | ||
152 | wlr_log(WLR_INFO, "Running compositor on wayland display '%s'", | ||
153 | server->socket); | ||
146 | wl_display_run(server->wl_display); | 154 | wl_display_run(server->wl_display); |
147 | } | 155 | } |