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
This commit is contained in:
parent
5221a329e2
commit
80a685ee51
7
dwl.c
7
dwl.c
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue