diff options
author | emersion <contact@emersion.fr> | 2018-06-09 11:38:16 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-06-09 11:38:16 +0100 |
commit | 88cd7616dbeff4367c41757490aa5f6f663a7318 (patch) | |
tree | a1ae7547bda8a32ad383585e1d2fedb063b0f69b /sway/desktop/output.c | |
parent | Merge pull request #2115 from RedSoxFan/restore-workspaces (diff) | |
download | sway-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.c | 23 |
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 | ||
1180 | static void handle_mode(struct wl_listener *listener, void *data) { | 1178 | static 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) { | |||
1228 | void output_enable(struct sway_output *output) { | 1229 | void 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); |