aboutsummaryrefslogtreecommitdiffstats
path: root/sway/desktop/output.c
diff options
context:
space:
mode:
authorLibravatar emersion <contact@emersion.fr>2018-06-09 11:38:16 +0100
committerLibravatar emersion <contact@emersion.fr>2018-06-09 11:38:16 +0100
commit88cd7616dbeff4367c41757490aa5f6f663a7318 (patch)
treea1ae7547bda8a32ad383585e1d2fedb063b0f69b /sway/desktop/output.c
parentMerge pull request #2115 from RedSoxFan/restore-workspaces (diff)
downloadsway-88cd7616dbeff4367c41757490aa5f6f663a7318.tar.gz
sway-88cd7616dbeff4367c41757490aa5f6f663a7318.tar.zst
sway-88cd7616dbeff4367c41757490aa5f6f663a7318.zip
Fix compilation errors related to disabled outputs
Diffstat (limited to 'sway/desktop/output.c')
-rw-r--r--sway/desktop/output.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index 3142bdb4..bd1d760d 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -1169,12 +1169,10 @@ static void handle_destroy(struct wl_listener *listener, void *data) {
1169 container_destroy(output->swayc); 1169 container_destroy(output->swayc);
1170 } 1170 }
1171 1171
1172 if (&output->link) { 1172 wl_list_remove(&output->link);
1173 wl_list_remove(&output->link); 1173 wl_list_remove(&output->destroy.link);
1174 wl_list_remove(&output->destroy.link); 1174 output->wlr_output->data = NULL;
1175 output->wlr_output = NULL; 1175 free(output);
1176 free(output);
1177 }
1178} 1176}
1179 1177
1180static void handle_mode(struct wl_listener *listener, void *data) { 1178static void handle_mode(struct wl_listener *listener, void *data) {
@@ -1212,10 +1210,13 @@ void handle_new_output(struct wl_listener *listener, void *data) {
1212 output->wlr_output = wlr_output; 1210 output->wlr_output = wlr_output;
1213 wlr_output->data = output; 1211 wlr_output->data = output;
1214 output->server = server; 1212 output->server = server;
1215 wl_list_insert(&root_container.sway_root->outputs, &output->link);
1216
1217 output->damage = wlr_output_damage_create(wlr_output); 1213 output->damage = wlr_output_damage_create(wlr_output);
1218 1214
1215 wl_signal_add(&wlr_output->events.destroy, &output->destroy);
1216 output->destroy.notify = handle_destroy;
1217
1218 wl_list_insert(&root_container.sway_root->outputs, &output->link);
1219
1219 if (!wl_list_empty(&wlr_output->modes)) { 1220 if (!wl_list_empty(&wlr_output->modes)) {
1220 struct wlr_output_mode *mode = 1221 struct wlr_output_mode *mode =
1221 wl_container_of(wlr_output->modes.prev, mode, link); 1222 wl_container_of(wlr_output->modes.prev, mode, link);
@@ -1228,6 +1229,10 @@ void handle_new_output(struct wl_listener *listener, void *data) {
1228void output_enable(struct sway_output *output) { 1229void output_enable(struct sway_output *output) {
1229 struct wlr_output *wlr_output = output->wlr_output; 1230 struct wlr_output *wlr_output = output->wlr_output;
1230 1231
1232 if (!sway_assert(output->swayc == NULL, "output is already enabled")) {
1233 return;
1234 }
1235
1231 output->swayc = output_create(output); 1236 output->swayc = output_create(output);
1232 if (!output->swayc) { 1237 if (!output->swayc) {
1233 // Output is disabled 1238 // Output is disabled
@@ -1241,8 +1246,6 @@ void output_enable(struct sway_output *output) {
1241 1246
1242 input_manager_configure_xcursor(input_manager); 1247 input_manager_configure_xcursor(input_manager);
1243 1248
1244 wl_signal_add(&wlr_output->events.destroy, &output->destroy);
1245 output->destroy.notify = handle_destroy;
1246 wl_signal_add(&wlr_output->events.mode, &output->mode); 1249 wl_signal_add(&wlr_output->events.mode, &output->mode);
1247 output->mode.notify = handle_mode; 1250 output->mode.notify = handle_mode;
1248 wl_signal_add(&wlr_output->events.transform, &output->transform); 1251 wl_signal_add(&wlr_output->events.transform, &output->transform);