vt(4): Mark cursor old position as dirty before reading the dirty area

Otherwise, the redraw is done during the next vt_flush run.

MFC after:	1 week
This commit is contained in:
Jean-Sébastien Pédron 2014-08-21 13:28:48 +00:00
parent c4ad232a03
commit c5dabe0780

View File

@ -832,6 +832,14 @@ vt_flush(struct vt_device *vd)
if (vd->vd_flags & VDF_SPLASH || vw->vw_flags & VWF_BUSY)
return;
#ifndef SC_NO_CUTPASTE
if ((vw->vw_flags & VWF_MOUSE_HIDE) == 0) {
/* Mark last mouse position as dirty to erase. */
vtbuf_mouse_cursor_position(&vw->vw_buf, vd->vd_mdirtyx,
vd->vd_mdirtyy);
}
#endif
vtbuf_undirty(&vw->vw_buf, &tarea, &tmask);
vt_termsize(vd, vf, &size);
@ -844,14 +852,6 @@ vt_flush(struct vt_device *vd)
vd->vd_flags &= ~VDF_INVALID;
}
#ifndef SC_NO_CUTPASTE
if ((vw->vw_flags & VWF_MOUSE_HIDE) == 0) {
/* Mark last mouse position as dirty to erase. */
vtbuf_mouse_cursor_position(&vw->vw_buf, vd->vd_mdirtyx,
vd->vd_mdirtyy);
}
#endif
for (row = tarea.tr_begin.tp_row; row < tarea.tr_end.tp_row; row++) {
if (!VTBUF_DIRTYROW(&tmask, row))
continue;