コード例 #1
0
ファイル: monitor.c プロジェクト: shellkr/bspwm
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();
}
コード例 #2
0
ファイル: monitor.c プロジェクト: dj95/bspwm
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);
}
コード例 #3
0
ファイル: monitor.c プロジェクト: hcchu/bspwm
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);
}