Lines Matching refs:vd

300 vt_schedule_flush(struct vt_device *vd, int ms)  in vt_schedule_flush()  argument
307 callout_schedule(&vd->vd_timer, hz / (1000 / ms)); in vt_schedule_flush()
313 struct vt_device *vd = vw->vw_device; in vt_resume_flush_timer() local
315 if (vd->vd_curwindow != vw) in vt_resume_flush_timer()
318 if (!(vd->vd_flags & VDF_ASYNC) || in vt_resume_flush_timer()
319 !atomic_cmpset_int(&vd->vd_timer_armed, 0, 1)) in vt_resume_flush_timer()
322 vt_schedule_flush(vd, ms); in vt_resume_flush_timer()
326 vt_suspend_flush_timer(struct vt_device *vd) in vt_suspend_flush_timer() argument
333 VT_LOCK_ASSERT(vd, MA_OWNED); in vt_suspend_flush_timer()
335 if (!(vd->vd_flags & VDF_ASYNC) || in vt_suspend_flush_timer()
336 !atomic_cmpset_int(&vd->vd_timer_armed, 1, 0)) in vt_suspend_flush_timer()
339 callout_stop(&vd->vd_timer); in vt_suspend_flush_timer()
496 struct vt_device *vd; in vt_proc_window_switch() local
504 vd = vw->vw_device; in vt_proc_window_switch()
505 curvw = vd->vd_curwindow; in vt_proc_window_switch()
534 VT_LOCK(vd); in vt_proc_window_switch()
536 VT_UNLOCK(vd); in vt_proc_window_switch()
539 VT_UNLOCK(vd); in vt_proc_window_switch()
565 struct vt_device *vd = vw->vw_device; in vt_window_switch() local
566 struct vt_window *curvw = vd->vd_curwindow; in vt_window_switch()
588 vd->vd_curwindow = vw; in vt_window_switch()
589 vd->vd_flags |= VDF_INVALID; in vt_window_switch()
590 if (vd->vd_driver->vd_postswitch) in vt_window_switch()
591 vd->vd_driver->vd_postswitch(vd); in vt_window_switch()
596 VT_LOCK(vd); in vt_window_switch()
604 vd->vd_driver->vd_postswitch) in vt_window_switch()
605 vd->vd_driver->vd_postswitch(vd); in vt_window_switch()
607 VT_UNLOCK(vd); in vt_window_switch()
612 VT_UNLOCK(vd); in vt_window_switch()
616 vt_suspend_flush_timer(vd); in vt_window_switch()
618 vd->vd_curwindow = vw; in vt_window_switch()
619 vd->vd_flags |= VDF_INVALID; in vt_window_switch()
620 cv_broadcast(&vd->vd_winswitch); in vt_window_switch()
621 VT_UNLOCK(vd); in vt_window_switch()
623 if (vd->vd_driver->vd_postswitch) in vt_window_switch()
624 vd->vd_driver->vd_postswitch(vd); in vt_window_switch()
630 if ((kbd = vd->vd_keyboard) != NULL) { in vt_window_switch()
645 vt_termsize(struct vt_device *vd, struct vt_font *vf, term_pos_t *size) in vt_termsize() argument
648 size->tp_row = vd->vd_height; in vt_termsize()
651 size->tp_col = vd->vd_width; in vt_termsize()
661 vt_termrect(struct vt_device *vd, struct vt_font *vf, term_rect_t *rect) in vt_termrect() argument
668 rect->tr_end.tp_row = vd->vd_height; in vt_termrect()
669 rect->tr_end.tp_col = vd->vd_width; in vt_termrect()
683 vt_winsize(struct vt_device *vd, struct vt_font *vf, struct winsize *size) in vt_winsize() argument
686 size->ws_ypixel = vd->vd_height; in vt_winsize()
690 size->ws_col = size->ws_xpixel = vd->vd_width; in vt_winsize()
702 struct vt_device *vd; in vt_compute_drawable_area() local
706 vd = vw->vw_device; in vt_compute_drawable_area()
713 vw->vw_draw_area.tr_end.tp_col = vd->vd_width; in vt_compute_drawable_area()
714 vw->vw_draw_area.tr_end.tp_row = vd->vd_height; in vt_compute_drawable_area()
725 height = vd->vd_height; in vt_compute_drawable_area()
728 vw->vw_draw_area.tr_begin.tp_col = (vd->vd_width % vf->vf_width) / 2; in vt_compute_drawable_area()
733 rounddown(vd->vd_width, vf->vf_width); in vt_compute_drawable_area()
756 vt_machine_kbdevent(struct vt_device *vd, int c) in vt_machine_kbdevent() argument
769 vd->vd_kbstate &= ~ALKED; in vt_machine_kbdevent()
819 struct vt_device *vd; in vt_scrollmode_kbdevent() local
822 vd = vw->vw_device; in vt_scrollmode_kbdevent()
831 vw = vd->vd_windows[c - F_SCR]; in vt_scrollmode_kbdevent()
835 VT_LOCK(vd); in vt_scrollmode_kbdevent()
853 vt_termsize(vd, vw->vw_font, &size); in vt_scrollmode_kbdevent()
863 vt_termsize(vd, vw->vw_font, &size); in vt_scrollmode_kbdevent()
869 VT_UNLOCK(vd); in vt_scrollmode_kbdevent()
873 vt_processkey(keyboard_t *kbd, struct vt_device *vd, int c) in vt_processkey() argument
875 struct vt_window *vw = vd->vd_curwindow; in vt_processkey()
885 vd->vd_kbstate &= ~ALKED; in vt_processkey()
895 vd->vd_kbstate |= ALKED; in vt_processkey()
904 if (vt_machine_kbdevent(vd, c)) in vt_processkey()
917 vw = vd->vd_windows[c - F_SCR]; in vt_processkey()
926 vw = vd->vd_windows[c]; in vt_processkey()
932 vw = vd->vd_windows[c]; in vt_processkey()
937 VT_LOCK(vd); in vt_processkey()
948 VT_UNLOCK(vd); in vt_processkey()
994 if (vd->vd_kbstate & ALKED) { in vt_processkey()
1002 kdb_alt_break(c, &vd->vd_altbrk); in vt_processkey()
1014 struct vt_device *vd = arg; in vt_kbdevent() local
1022 vd->vd_keyboard = NULL; in vt_kbdevent()
1023 kbd_release(kbd, (void *)vd); in vt_kbdevent()
1031 vt_processkey(kbd, vd, c); in vt_kbdevent()
1037 vt_allocate_keyboard(struct vt_device *vd) in vt_allocate_keyboard() argument
1049 if (vd->vd_curwindow == &vt_conswindow) { in vt_allocate_keyboard()
1050 grabbed = vd->vd_curwindow->vw_grabbed; in vt_allocate_keyboard()
1052 vtterm_cnungrab_noswitch(vd, vd->vd_curwindow); in vt_allocate_keyboard()
1055 idx0 = kbd_allocate("kbdmux", -1, vd, vt_kbdevent, vd); in vt_allocate_keyboard()
1077 idx0 = kbd_allocate("*", -1, vd, vt_kbdevent, vd); in vt_allocate_keyboard()
1084 vd->vd_keyboard = k0; in vt_allocate_keyboard()
1086 vd->vd_keyboard->kb_index); in vt_allocate_keyboard()
1088 if (vd->vd_curwindow == &vt_conswindow) { in vt_allocate_keyboard()
1090 vtterm_cngrab_noswitch(vd, vd->vd_curwindow); in vt_allocate_keyboard()
1121 struct vt_device *vd = vw->vw_device; in vtterm_bell() local
1123 vtterm_devctl(vt_enable_bell, vd->vd_flags & VDF_QUIET_BELL, in vtterm_bell()
1129 if (vd->vd_flags & VDF_QUIET_BELL) in vtterm_bell()
1145 struct vt_device *vd = vw->vw_device; in vtterm_beep() local
1155 vtterm_devctl(vt_enable_bell, vd->vd_flags & VDF_QUIET_BELL, in vtterm_beep()
1257 vt_is_cursor_in_area(const struct vt_device *vd, const term_rect_t *area) in vt_is_cursor_in_area() argument
1265 mx = vd->vd_mx_drawn + vd->vd_curwindow->vw_draw_area.tr_begin.tp_col; in vt_is_cursor_in_area()
1266 my = vd->vd_my_drawn + vd->vd_curwindow->vw_draw_area.tr_begin.tp_row; in vt_is_cursor_in_area()
1269 mx + vd->vd_mcursor->width <= area->tr_begin.tp_col || in vt_is_cursor_in_area()
1271 my + vd->vd_mcursor->height <= area->tr_begin.tp_row) in vt_is_cursor_in_area()
1277 vt_mark_mouse_position_as_dirty(struct vt_device *vd, int locked) in vt_mark_mouse_position_as_dirty() argument
1284 vw = vd->vd_curwindow; in vt_mark_mouse_position_as_dirty()
1287 x = vd->vd_mx_drawn; in vt_mark_mouse_position_as_dirty()
1288 y = vd->vd_my_drawn; in vt_mark_mouse_position_as_dirty()
1294 ((x + vd->vd_mcursor->width) / vf->vf_width) + 1; in vt_mark_mouse_position_as_dirty()
1296 ((y + vd->vd_mcursor->height) / vf->vf_height) + 1; in vt_mark_mouse_position_as_dirty()
1312 if (vd->vd_driver->vd_invalidate_text) in vt_mark_mouse_position_as_dirty()
1313 vd->vd_driver->vd_invalidate_text(vd, &area); in vt_mark_mouse_position_as_dirty()
1321 vt_set_border(struct vt_device *vd, const term_rect_t *area, in vt_set_border() argument
1324 vd_drawrect_t *drawrect = vd->vd_driver->vd_drawrect; in vt_set_border()
1331 drawrect(vd, 0, 0, vd->vd_width - 1, in vt_set_border()
1336 drawrect(vd, 0, area->tr_begin.tp_row, in vt_set_border()
1340 if (area->tr_end.tp_col < vd->vd_width) in vt_set_border()
1341 drawrect(vd, area->tr_end.tp_col, area->tr_begin.tp_row, in vt_set_border()
1342 vd->vd_width - 1, area->tr_end.tp_row - 1, 1, c); in vt_set_border()
1345 if (area->tr_end.tp_row < vd->vd_height) in vt_set_border()
1346 drawrect(vd, 0, area->tr_end.tp_row, vd->vd_width - 1, in vt_set_border()
1347 vd->vd_height - 1, 1, c); in vt_set_border()
1351 vt_flush_to_buffer(struct vt_device *vd, in vt_flush_to_buffer() argument
1371 if (vd->vd_drawn && (vd->vd_drawn[z] == c) && in vt_flush_to_buffer()
1372 vd->vd_drawnfg && (vd->vd_drawnfg[z] == fg) && in vt_flush_to_buffer()
1373 vd->vd_drawnbg && (vd->vd_drawnbg[z] == bg)) { in vt_flush_to_buffer()
1374 vd->vd_pos_to_flush[z] = false; in vt_flush_to_buffer()
1378 vd->vd_pos_to_flush[z] = true; in vt_flush_to_buffer()
1380 if (vd->vd_drawn) in vt_flush_to_buffer()
1381 vd->vd_drawn[z] = c; in vt_flush_to_buffer()
1382 if (vd->vd_drawnfg) in vt_flush_to_buffer()
1383 vd->vd_drawnfg[z] = fg; in vt_flush_to_buffer()
1384 if (vd->vd_drawnbg) in vt_flush_to_buffer()
1385 vd->vd_drawnbg[z] = bg; in vt_flush_to_buffer()
1391 vt_bitblt_buffer(struct vt_device *vd, const struct vt_window *vw, in vt_bitblt_buffer() argument
1415 if (!vd->vd_pos_to_flush[z]) in vt_bitblt_buffer()
1418 c = vd->vd_drawn[z]; in vt_bitblt_buffer()
1419 fg = vd->vd_drawnfg[z]; in vt_bitblt_buffer()
1420 bg = vd->vd_drawnbg[z]; in vt_bitblt_buffer()
1423 vd->vd_driver->vd_bitblt_bmp(vd, vw, in vt_bitblt_buffer()
1430 if (!vd->vd_mshown) in vt_bitblt_buffer()
1440 if (vt_is_cursor_in_area(vd, &drawn_area)) { in vt_bitblt_buffer()
1441 vd->vd_driver->vd_bitblt_bmp(vd, vw, in vt_bitblt_buffer()
1442 vd->vd_mcursor->map, vd->vd_mcursor->mask, in vt_bitblt_buffer()
1443 vd->vd_mcursor->width, vd->vd_mcursor->height, in vt_bitblt_buffer()
1444 vd->vd_mx_drawn + vw->vw_draw_area.tr_begin.tp_col, in vt_bitblt_buffer()
1445 vd->vd_my_drawn + vw->vw_draw_area.tr_begin.tp_row, in vt_bitblt_buffer()
1446 vd->vd_mcursor_fg, vd->vd_mcursor_bg); in vt_bitblt_buffer()
1452 vt_draw_decorations(struct vt_device *vd) in vt_draw_decorations() argument
1457 vw = vd->vd_curwindow; in vt_draw_decorations()
1460 vt_set_border(vd, &vw->vw_draw_area, a->ta_bgcolor); in vt_draw_decorations()
1463 vtterm_draw_cpu_logos(vd); in vt_draw_decorations()
1467 vt_flush(struct vt_device *vd) in vt_flush() argument
1480 vw = vd->vd_curwindow; in vt_flush()
1484 if (vd->vd_flags & VDF_SPLASH || vw->vw_flags & VWF_BUSY) in vt_flush()
1488 if (((vd->vd_flags & VDF_TEXTMODE) == 0) && (vf == NULL)) in vt_flush()
1491 VT_FLUSH_LOCK(vd); in vt_flush()
1497 cursor_was_shown = vd->vd_mshown; in vt_flush()
1498 cursor_moved = (vd->vd_mx != vd->vd_mx_drawn || in vt_flush()
1499 vd->vd_my != vd->vd_my_drawn); in vt_flush()
1502 if ((vd->vd_flags & VDF_MOUSECURSOR) && /* Mouse support enabled. */ in vt_flush()
1505 vd->vd_mshown = 1; in vt_flush()
1507 vd->vd_mshown = 0; in vt_flush()
1514 if (cursor_was_shown != vd->vd_mshown || in vt_flush()
1515 (vd->vd_mshown && cursor_moved)) in vt_flush()
1516 vt_mark_mouse_position_as_dirty(vd, true); in vt_flush()
1523 vd->vd_mx_drawn = vd->vd_mx; in vt_flush()
1524 vd->vd_my_drawn = vd->vd_my; in vt_flush()
1530 if (vd->vd_mshown && cursor_moved) in vt_flush()
1531 vt_mark_mouse_position_as_dirty(vd, true); in vt_flush()
1538 if (vd->vd_flags & (VDF_INVALID | VDF_SUSPENDED)) { in vt_flush()
1540 vd->vd_flags &= ~VDF_INVALID; in vt_flush()
1542 vt_termrect(vd, vf, &tarea); in vt_flush()
1543 if (vd->vd_driver->vd_invalidate_text) in vt_flush()
1544 vd->vd_driver->vd_invalidate_text(vd, &tarea); in vt_flush()
1548 if (vd->vd_driver->vd_bitblt_after_vtbuf_unlock) { in vt_flush()
1557 vt_flush_to_buffer(vd, vw, &tarea); in vt_flush()
1559 vt_bitblt_buffer(vd, vw, &tarea); in vt_flush()
1562 vt_draw_decorations(vd); in vt_flush()
1575 vd->vd_driver->vd_bitblt_text(vd, vw, &tarea); in vt_flush()
1578 vt_draw_decorations(vd); in vt_flush()
1584 VT_FLUSH_UNLOCK(vd); in vt_flush()
1592 VT_FLUSH_UNLOCK(vd); in vt_flush()
1600 struct vt_device *vd; in vt_timer() local
1603 vd = arg; in vt_timer()
1605 changed = vt_flush(vd); in vt_timer()
1609 vt_schedule_flush(vd, 0); in vt_timer()
1611 vd->vd_timer_armed = 0; in vt_timer()
1641 struct vt_device *vd = vw->vw_device; in vtterm_done() local
1645 if (vd->vd_curwindow != vw) { in vtterm_done()
1646 vd->vd_curwindow = vw; in vtterm_done()
1647 vd->vd_flags |= VDF_INVALID; in vtterm_done()
1648 if (vd->vd_driver->vd_postswitch) in vtterm_done()
1649 vd->vd_driver->vd_postswitch(vd); in vtterm_done()
1651 vd->vd_flags &= ~VDF_SPLASH; in vtterm_done()
1652 vt_flush(vd); in vtterm_done()
1653 } else if (!(vd->vd_flags & VDF_ASYNC)) { in vtterm_done()
1654 vt_flush(vd); in vtterm_done()
1660 vtterm_splash(struct vt_device *vd) in vtterm_splash() argument
1671 if (!(vd->vd_flags & VDF_TEXTMODE) && (boothowto & RB_MUTE)) { in vtterm_splash()
1673 top = (vd->vd_height - vt_logo_height) / 2; in vtterm_splash()
1674 left = (vd->vd_width - vt_logo_width) / 2; in vtterm_splash()
1675 vd->vd_driver->vd_bitblt_bmp(vd, vd->vd_curwindow, in vtterm_splash()
1684 top = (vd->vd_height - si->si_height) / 2; in vtterm_splash()
1685 left = (vd->vd_width - si->si_width) / 2; in vtterm_splash()
1686 vd->vd_driver->vd_bitblt_argb(vd, vd->vd_curwindow, in vtterm_splash()
1690 vd->vd_flags |= VDF_SPLASH; in vtterm_splash()
1832 struct vt_device *vd = vw->vw_device; in vtterm_cnprobe() local
1839 if (vd->vd_flags & VDF_INITIALIZED) in vtterm_cnprobe()
1847 if (vtd->vd_probe(vd) == CN_DEAD) in vtterm_cnprobe()
1855 vd->vd_flags |= VDF_DEAD; in vtterm_cnprobe()
1857 vd->vd_driver = vtdbest; in vtterm_cnprobe()
1858 cp->cn_pri = vd->vd_driver->vd_init(vd); in vtterm_cnprobe()
1863 vd->vd_flags |= VDF_DEAD; in vtterm_cnprobe()
1869 vd->vd_unit = atomic_fetchadd_int(&vt_unit, 1); in vtterm_cnprobe()
1870 vd->vd_windows[VT_CONSWINDOW] = vw; in vtterm_cnprobe()
1876 if ((vd->vd_flags & VDF_TEXTMODE) == 0) { in vtterm_cnprobe()
1886 if (vd->vd_width != 0 && vd->vd_height != 0) in vtterm_cnprobe()
1887 vt_termsize(vd, vw->vw_font, &vw->vw_buf.vb_scr_size); in vtterm_cnprobe()
1892 vt_winsize(vd, vw->vw_font, &wsz); in vtterm_cnprobe()
1899 vtterm_splash(vd); in vtterm_cnprobe()
1901 vd->vd_flags |= VDF_INITIALIZED; in vtterm_cnprobe()
1909 struct vt_device *vd = vw->vw_device; in vtterm_cngetc() local
1917 if (vd->vd_flags & VDF_SPLASH) { in vtterm_cngetc()
1919 vd->vd_flags &= ~VDF_SPLASH; in vtterm_cngetc()
1921 vd->vd_flags |= VDF_INVALID; in vtterm_cngetc()
1922 vt_flush(vd); in vtterm_cngetc()
1926 if ((kbd = vd->vd_keyboard) == NULL) in vtterm_cngetc()
1942 vt_flush(vd); in vtterm_cngetc()
1978 vt_flush(vd); in vtterm_cngetc()
1998 vtterm_cngrab_noswitch(struct vt_device *vd, struct vt_window *vw) in vtterm_cngrab_noswitch() argument
2005 if ((kbd = vd->vd_keyboard) == NULL) in vtterm_cngrab_noswitch()
2024 vtterm_cnungrab_noswitch(struct vt_device *vd, struct vt_window *vw) in vtterm_cnungrab_noswitch() argument
2031 if ((kbd = vd->vd_keyboard) == NULL) in vtterm_cnungrab_noswitch()
2045 struct vt_device *vd; in vtterm_cngrab() local
2049 vd = vw->vw_device; in vtterm_cngrab()
2052 if (vd->vd_grabwindow == NULL) in vtterm_cngrab()
2053 vd->vd_grabwindow = vd->vd_curwindow; in vtterm_cngrab()
2058 vtterm_cngrab_noswitch(vd, vw); in vtterm_cngrab()
2064 struct vt_device *vd; in vtterm_cnungrab() local
2068 vd = vw->vw_device; in vtterm_cnungrab()
2070 MPASS(vd->vd_grabwindow != NULL); in vtterm_cnungrab()
2071 if (vtterm_cnungrab_noswitch(vd, vw) != 0) in vtterm_cnungrab()
2082 grabwindow = vd->vd_grabwindow; in vtterm_cnungrab()
2083 vd->vd_grabwindow = NULL; in vtterm_cnungrab()
2093 struct vt_device *vd = vw->vw_device; in vtterm_opened() local
2095 VT_LOCK(vd); in vtterm_opened()
2096 vd->vd_flags &= ~VDF_SPLASH; in vtterm_opened()
2103 VT_UNLOCK(vd); in vtterm_opened()
2109 struct vt_device *vd = vw->vw_device; in vt_change_font() local
2127 VT_LOCK(vd); in vt_change_font()
2130 VT_UNLOCK(vd); in vt_change_font()
2134 VT_UNLOCK(vd); in vt_change_font()
2136 vt_termsize(vd, vf, &size); in vt_change_font()
2137 vt_winsize(vd, vf, &wsz); in vt_change_font()
2147 VT_LOCK(vd); in vt_change_font()
2162 vd->vd_mx = min(vd->vd_mx, in vt_change_font()
2165 vd->vd_my = min(vd->vd_my, in vt_change_font()
2170 if (vd->vd_curwindow == vw) { in vt_change_font()
2171 vd->vd_flags |= VDF_INVALID; in vt_change_font()
2175 VT_UNLOCK(vd); in vt_change_font()
2268 vt_mouse_terminput_button(struct vt_device *vd, int button) in vt_mouse_terminput_button() argument
2275 vw = vd->vd_curwindow; in vt_mouse_terminput_button()
2279 x = vd->vd_mx / vf->vf_width; in vt_mouse_terminput_button()
2280 y = vd->vd_my / vf->vf_height; in vt_mouse_terminput_button()
2294 vt_mouse_terminput(struct vt_device *vd, int type, int x, int y, int event, in vt_mouse_terminput() argument
2303 vt_mouse_terminput_button(vd, 0); in vt_mouse_terminput()
2305 vt_mouse_terminput_button(vd, 1); in vt_mouse_terminput()
2307 vt_mouse_terminput_button(vd, 2); in vt_mouse_terminput()
2310 vt_mouse_terminput_button(vd, 3); in vt_mouse_terminput()
2317 sc_mouse_input_button(vd, 64); in vt_mouse_terminput()
2320 sc_mouse_input_button(vd, 65); in vt_mouse_terminput()
2347 struct vt_device *vd; in vt_mouse_event() local
2353 vd = main_vd; in vt_mouse_event()
2354 vw = vd->vd_curwindow; in vt_mouse_event()
2374 vt_mouse_terminput(vd, type, x, y, event, cnt); in vt_mouse_event()
2380 x += vd->vd_mx; in vt_mouse_event()
2381 y += vd->vd_my; in vt_mouse_event()
2383 vt_termsize(vd, vf, &size); in vt_mouse_event()
2391 vd->vd_mx = x; in vt_mouse_event()
2392 vd->vd_my = y; in vt_mouse_event()
2393 if (vd->vd_mstate & (MOUSE_BUTTON1DOWN | VT_MOUSE_EXTENDBUTTON)) in vt_mouse_event()
2395 vd->vd_mx / vf->vf_width, in vt_mouse_event()
2396 vd->vd_my / vf->vf_height); in vt_mouse_event()
2432 vd->vd_mx / vf->vf_width, in vt_mouse_event()
2433 vd->vd_my / vf->vf_height); in vt_mouse_event()
2440 if (!(vd->vd_mstate & MOUSE_BUTTON1DOWN)) in vt_mouse_event()
2456 vd->vd_mstate |= event; in vt_mouse_event()
2458 vd->vd_mstate &= ~event; in vt_mouse_event()
2460 if (vtbuf_set_mark(&vw->vw_buf, mark, vd->vd_mx / vf->vf_width, in vt_mouse_event()
2461 vd->vd_my / vf->vf_height) == 1) { in vt_mouse_event()
2485 if (len > VD_PASTEBUFSZ(vd)) { in vt_mouse_event()
2486 VD_PASTEBUF(vd) = realloc(VD_PASTEBUF(vd), len, M_VT, in vt_mouse_event()
2489 VD_PASTEBUFSZ(vd) = len; in vt_mouse_event()
2492 vtbuf_extract_marked(&vw->vw_buf, VD_PASTEBUF(vd), len, mark); in vt_mouse_event()
2494 VD_PASTEBUFLEN(vd) = len; in vt_mouse_event()
2503 struct vt_device *vd; in vt_mouse_state() local
2506 vd = main_vd; in vt_mouse_state()
2507 vw = vd->vd_curwindow; in vt_mouse_state()
2519 vt_mark_mouse_position_as_dirty(vd, false); in vt_mouse_state()
2529 struct vt_device *vd = vw->vw_device; in vtterm_mmap() local
2531 if (vd->vd_driver->vd_fb_mmap) in vtterm_mmap()
2532 return (vd->vd_driver->vd_fb_mmap(vd, offset, paddr, nprot, in vtterm_mmap()
2543 struct vt_device *vd = vw->vw_device; in vtterm_ioctl() local
2622 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2638 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2640 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2663 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2665 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2675 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2677 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2700 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2702 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2716 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2718 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2741 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2743 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2759 if (vd->vd_driver->vd_fb_ioctl) in vtterm_ioctl()
2760 return (vd->vd_driver->vd_fb_ioctl(vd, cmd, data, td)); in vtterm_ioctl()
2779 VT_LOCK(vd); in vtterm_ioctl()
2780 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2781 vd->vd_flags |= VDF_INVALID; in vtterm_ioctl()
2784 VT_UNLOCK(vd); in vtterm_ioctl()
2792 vd->vd_flags |= VDF_QUIET_BELL; in vtterm_ioctl()
2794 vd->vd_flags &= ~VDF_QUIET_BELL; in vtterm_ioctl()
2801 if (vw == vd->vd_curwindow) { in vtterm_ioctl()
2803 if ((kbd = vd->vd_keyboard) != NULL) in vtterm_ioctl()
2808 vi->m_num = vd->vd_curwindow->vw_number + 1; in vtterm_ioctl()
2829 if (vd->vd_flags & VDF_MOUSECURSOR) { in vtterm_ioctl()
2830 vd->vd_flags &= ~VDF_MOUSECURSOR; in vtterm_ioctl()
2837 if (!(vd->vd_flags & VDF_MOUSECURSOR)) { in vtterm_ioctl()
2838 vd->vd_flags |= VDF_MOUSECURSOR; in vtterm_ioctl()
2839 vd->vd_mx = vd->vd_width / 2; in vtterm_ioctl()
2840 vd->vd_my = vd->vd_height / 2; in vtterm_ioctl()
2853 if (vd->vd_flags & VDF_TEXTMODE) in vtterm_ioctl()
2922 if (vd->vd_keyboard == NULL || in vtterm_ioctl()
2923 vd->vd_keyboard->kb_index != *(int *)data) { in vtterm_ioctl()
2930 (void *)vd, vt_kbdevent, vd); in vtterm_ioctl()
2932 if ((kbd = vd->vd_keyboard) != NULL) { in vtterm_ioctl()
2933 vt_save_kbd_state(vd->vd_curwindow, kbd); in vtterm_ioctl()
2934 kbd_release(kbd, (void *)vd); in vtterm_ioctl()
2936 kbd = vd->vd_keyboard = kbd_get_keyboard(i); in vtterm_ioctl()
2938 vt_update_kbd_mode(vd->vd_curwindow, kbd); in vtterm_ioctl()
2939 vt_update_kbd_state(vd->vd_curwindow, kbd); in vtterm_ioctl()
2949 if ((kbd = vd->vd_keyboard) != NULL) { in vtterm_ioctl()
2950 vt_save_kbd_state(vd->vd_curwindow, kbd); in vtterm_ioctl()
2951 error = kbd_release(kbd, (void *)vd); in vtterm_ioctl()
2953 vd->vd_keyboard = NULL; in vtterm_ioctl()
2965 return (vt_proc_window_switch(vd->vd_windows[win])); in vtterm_ioctl()
2968 *(int *)data = vd->vd_curwindow->vw_number + 1; in vtterm_ioctl()
2983 VT_LOCK(vd); in vtterm_ioctl()
2985 vw = vd->vd_windows[i]; in vtterm_ioctl()
2990 VT_UNLOCK(vd); in vtterm_ioctl()
2994 VT_UNLOCK(vd); in vtterm_ioctl()
3005 vw = vd->vd_windows[idx - 1]; in vtterm_ioctl()
3007 VT_LOCK(vd); in vtterm_ioctl()
3008 while (vd->vd_curwindow != vw && error == 0) in vtterm_ioctl()
3009 error = cv_wait_sig(&vd->vd_winswitch, &vd->vd_lock); in vtterm_ioctl()
3010 VT_UNLOCK(vd); in vtterm_ioctl()
3073 if ((vw != vd->vd_curwindow) || (vw->vw_smode.mode != in vtterm_ioctl()
3113 vt_allocate_window(struct vt_device *vd, unsigned int window) in vt_allocate_window() argument
3121 vw->vw_device = vd; in vt_allocate_window()
3125 if ((vd->vd_flags & VDF_TEXTMODE) == 0) { in vt_allocate_window()
3130 vt_termsize(vd, vw->vw_font, &size); in vt_allocate_window()
3131 vt_winsize(vd, vw->vw_font, &wsz); in vt_allocate_window()
3137 vd->vd_windows[window] = vw; in vt_allocate_window()
3144 vt_upgrade(struct vt_device *vd) in vt_upgrade() argument
3156 vw = vd->vd_windows[i]; in vt_upgrade()
3159 vw = vt_allocate_window(vd, i); in vt_upgrade()
3172 VT_LOCK(vd); in vt_upgrade()
3173 if (vd->vd_curwindow == NULL) in vt_upgrade()
3174 vd->vd_curwindow = vd->vd_windows[VT_CONSWINDOW]; in vt_upgrade()
3177 if (!(vd->vd_flags & VDF_ASYNC)) { in vt_upgrade()
3179 vt_allocate_keyboard(vd); in vt_upgrade()
3182 callout_init_mtx(&vd->vd_timer, &vd->vd_lock, 0); in vt_upgrade()
3192 atomic_add_acq_int(&vd->vd_timer_armed, 1); in vt_upgrade()
3193 vd->vd_flags |= VDF_ASYNC; in vt_upgrade()
3194 callout_reset(&vd->vd_timer, hz / VT_TIMERFREQ, vt_timer, vd); in vt_upgrade()
3198 VT_UNLOCK(vd); in vt_upgrade()
3201 vt_resize(vd); in vt_upgrade()
3206 vd, EVENTHANDLER_PRI_ANY); in vt_upgrade()
3207 EVENTHANDLER_REGISTER(power_resume, vt_resume_handler, vd, in vt_upgrade()
3213 vt_resize(struct vt_device *vd) in vt_resize() argument
3219 vw = vd->vd_windows[i]; in vt_resize()
3220 VT_LOCK(vd); in vt_resize()
3222 if (!(vd->vd_flags & VDF_TEXTMODE) && vw->vw_font == NULL) in vt_resize()
3224 VT_UNLOCK(vd); in vt_resize()
3237 struct vt_device *vd; in vt_replace_backend() local
3239 vd = main_vd; in vt_replace_backend()
3241 if (vd->vd_flags & VDF_ASYNC) { in vt_replace_backend()
3243 VT_LOCK(vd); in vt_replace_backend()
3244 vt_suspend_flush_timer(vd); in vt_replace_backend()
3245 VT_UNLOCK(vd); in vt_replace_backend()
3250 terminal_mute(vd->vd_curwindow->vw_terminal, 1); in vt_replace_backend()
3257 VT_LOCK(vd); in vt_replace_backend()
3258 vd->vd_flags &= ~VDF_TEXTMODE; in vt_replace_backend()
3266 vd->vd_prev_driver = vd->vd_driver; in vt_replace_backend()
3267 vd->vd_prev_softc = vd->vd_softc; in vt_replace_backend()
3268 vd->vd_driver = drv; in vt_replace_backend()
3269 vd->vd_softc = softc; in vt_replace_backend()
3271 vd->vd_driver->vd_init(vd); in vt_replace_backend()
3272 } else if (vd->vd_prev_driver != NULL && vd->vd_prev_softc != NULL) { in vt_replace_backend()
3280 old_drv = vd->vd_driver; in vt_replace_backend()
3281 old_softc = vd->vd_softc; in vt_replace_backend()
3283 vd->vd_driver = vd->vd_prev_driver; in vt_replace_backend()
3284 vd->vd_softc = vd->vd_prev_softc; in vt_replace_backend()
3285 vd->vd_prev_driver = NULL; in vt_replace_backend()
3286 vd->vd_prev_softc = NULL; in vt_replace_backend()
3288 vd->vd_flags |= VDF_DOWNGRADE; in vt_replace_backend()
3290 vd->vd_driver->vd_init(vd); in vt_replace_backend()
3293 old_drv->vd_fini(vd, old_softc); in vt_replace_backend()
3295 vd->vd_flags &= ~VDF_DOWNGRADE; in vt_replace_backend()
3298 VT_UNLOCK(vd); in vt_replace_backend()
3301 vt_upgrade(vd); in vt_replace_backend()
3307 if (vd->vd_driver->vd_postswitch) in vt_replace_backend()
3308 vd->vd_driver->vd_postswitch(vd); in vt_replace_backend()
3311 if (vd->vd_flags & VDF_SPLASH) in vt_replace_backend()
3312 vtterm_splash(vd); in vt_replace_backend()
3315 if (vd->vd_flags & VDF_ASYNC) { in vt_replace_backend()
3317 terminal_mute(vd->vd_curwindow->vw_terminal, 0); in vt_replace_backend()
3319 vt_resume_flush_timer(vd->vd_curwindow, 0); in vt_replace_backend()
3326 termcn_cnregister(vd->vd_windows[VT_CONSWINDOW]->vw_terminal); in vt_replace_backend()
3332 struct vt_device *vd; in vt_suspend_handler() local
3334 vd = priv; in vt_suspend_handler()
3335 vd->vd_flags |= VDF_SUSPENDED; in vt_suspend_handler()
3336 if (vd->vd_driver != NULL && vd->vd_driver->vd_suspend != NULL) in vt_suspend_handler()
3337 vd->vd_driver->vd_suspend(vd); in vt_suspend_handler()
3343 struct vt_device *vd; in vt_resume_handler() local
3345 vd = priv; in vt_resume_handler()
3346 if (vd->vd_driver != NULL && vd->vd_driver->vd_resume != NULL) in vt_resume_handler()
3347 vd->vd_driver->vd_resume(vd); in vt_resume_handler()
3348 vd->vd_flags &= ~VDF_SUSPENDED; in vt_resume_handler()
3402 vt_suspend(struct vt_device *vd) in vt_suspend() argument
3409 vd->vd_savedwindow = vd->vd_curwindow; in vt_suspend()
3411 vt_proc_window_switch(vd->vd_windows[VT_CONSWINDOW]); in vt_suspend()
3415 VT_LOCK(vd); in vt_suspend()
3416 while (vd->vd_curwindow != vd->vd_windows[VT_CONSWINDOW] && error == 0) in vt_suspend()
3417 error = cv_wait_sig(&vd->vd_winswitch, &vd->vd_lock); in vt_suspend()
3418 VT_UNLOCK(vd); in vt_suspend()
3422 vt_resume(struct vt_device *vd) in vt_resume() argument
3428 vt_proc_window_switch(vd->vd_savedwindow); in vt_resume()
3429 vd->vd_savedwindow = NULL; in vt_resume()