void remove_monitor(monitor_t *m) { PRINTF("remove monitor %s (0x%X)\n", m->name, m->id); while (m->desk_head != NULL) remove_desktop(m, m->desk_head); monitor_t *prev = m->prev; monitor_t *next = m->next; monitor_t *last_mon = history_get_monitor(m); if (prev != NULL) prev->next = next; if (next != NULL) next->prev = prev; if (mon_head == m) mon_head = next; if (mon_tail == m) mon_tail = prev; if (pri_mon == m) pri_mon = NULL; if (mon == m) { mon = (last_mon == NULL ? (prev == NULL ? next : prev) : last_mon); if (mon != NULL && mon->desk != NULL) update_current(); } xcb_destroy_window(dpy, m->root); free(m); num_monitors--; put_status(); }
void remove_monitor(monitor_t *m) { put_status(SBSC_MASK_MONITOR_REMOVE, "monitor_remove 0x%08X\n", m->id); while (m->desk_head != NULL) { remove_desktop(m, m->desk_head); } unlink_monitor(m); xcb_destroy_window(dpy, m->root); free(m); if (mon == NULL) { focus_node(NULL, NULL, NULL); } put_status(SBSC_MASK_REPORT); }
void remove_monitor(monitor_t *m) { while (m->desk_head != NULL) { remove_desktop(m, m->desk_head); } monitor_t *prev = m->prev; monitor_t *next = m->next; monitor_t *last_mon = history_last_monitor(m); if (prev != NULL) { prev->next = next; } if (next != NULL) { next->prev = prev; } if (mon_head == m) { mon_head = next; } if (mon_tail == m) { mon_tail = prev; } if (pri_mon == m) { pri_mon = NULL; } if (mon == m) { mon = (last_mon == NULL ? (prev == NULL ? next : prev) : last_mon); if (mon != NULL && mon->desk != NULL) { update_focused(); } } put_status(SBSC_MASK_MONITOR_REMOVE, "monitor_remove 0x%08X\n", m->id); xcb_destroy_window(dpy, m->root); free(m); put_status(SBSC_MASK_REPORT); }