diff options
| author | Stivvo <stivvo01@gmail.com> | |
|---|---|---|
| 2020-10-31 17:10:06 +0100 | ||
| committer | Stivvo <stivvo01@gmail.com> | |
| 2020-10-31 17:11:16 +0100 | ||
| commit | 80a685ee51da69ae0a7bae11620c5f33c3cd2de2 (patch) | |
| tree | eb3b97ceab572d7aabaacf84824e77a580e9ad82 /dwl.c | |
| parent | 5221a329e254627c186ba8e4d68f9595d4e3158a (diff) | |
| download | dwl-80a685ee51da69ae0a7bae11620c5f33c3cd2de2.tar.gz dwl-80a685ee51da69ae0a7bae11620c5f33c3cd2de2.tar.bz2 dwl-80a685ee51da69ae0a7bae11620c5f33c3cd2de2.zip | |
Fix crash with no monitors left
When there's no monitors left, prevent the while in cleanupmon() to
become an infinite loop
Also switch to the left monitors instead of the right
@@ -696,20 +696,19 @@ cleanupmon(struct wl_listener *listener, void *data) { struct wlr_output *wlr_output = data; Monitor *m = wlr_output->data; + int nmons = wl_list_length(&mons), i = 0; wl_list_remove(&m->destroy.link); wl_list_remove(&m->frame.link); wl_list_remove(&m->link); wlr_output_layout_remove(output_layout, m->wlr_output); - updatemons(); do // don't switch to disabled mons - selmon = wl_container_of(mons.next, selmon, link); - while (!selmon->wlr_output->enabled); + selmon = wl_container_of(mons.prev, selmon, link); + while (!selmon->wlr_output->enabled && i++ < nmons); focusclient(selclient(), focustop(selmon), 1); closemon(m); - free(m); } |