예제 #1
0
void
vtbuf_dirty(struct vt_buf *vb, const term_rect_t *area)
{

	VTBUF_LOCK(vb);
	vtbuf_dirty_locked(vb, area);
	VTBUF_UNLOCK(vb);
}
예제 #2
0
파일: vt_buf.c 프로젝트: Alkzndr/freebsd
void
vtbuf_undirty(struct vt_buf *vb, term_rect_t *r)
{

	VTBUF_LOCK(vb);
	*r = vb->vb_dirtyrect;
	vtbuf_make_undirty(vb);
	VTBUF_UNLOCK(vb);
}
예제 #3
0
파일: vt_buf.c 프로젝트: ChristosKa/freebsd
static inline void
vtbuf_dirty(struct vt_buf *vb, const term_rect_t *area)
{

	VTBUF_LOCK(vb);
	if (vb->vb_dirtyrect.tr_begin.tp_row > area->tr_begin.tp_row)
		vb->vb_dirtyrect.tr_begin.tp_row = area->tr_begin.tp_row;
	if (vb->vb_dirtyrect.tr_begin.tp_col > area->tr_begin.tp_col)
		vb->vb_dirtyrect.tr_begin.tp_col = area->tr_begin.tp_col;
	if (vb->vb_dirtyrect.tr_end.tp_row < area->tr_end.tp_row)
		vb->vb_dirtyrect.tr_end.tp_row = area->tr_end.tp_row;
	if (vb->vb_dirtyrect.tr_end.tp_col < area->tr_end.tp_col)
		vb->vb_dirtyrect.tr_end.tp_col = area->tr_end.tp_col;
	vb->vb_dirtymask.vbm_row |=
	    vtbuf_dirty_axis(area->tr_begin.tp_row, area->tr_end.tp_row);
	vb->vb_dirtymask.vbm_col |=
	    vtbuf_dirty_axis(area->tr_begin.tp_col, area->tr_end.tp_col);
	VTBUF_UNLOCK(vb);
}
예제 #4
0
void
vtbuf_fill_locked(struct vt_buf *vb, const term_rect_t *r, term_char_t c)
{
	KASSERT(r->tr_begin.tp_row < vb->vb_scr_size.tp_row,
	    ("vtbuf_fill_locked begin.tp_row %d must be < screen height %d",
		r->tr_begin.tp_row, vb->vb_scr_size.tp_row));
	KASSERT(r->tr_begin.tp_col < vb->vb_scr_size.tp_col,
	    ("vtbuf_fill_locked begin.tp_col %d must be < screen width %d",
		r->tr_begin.tp_col, vb->vb_scr_size.tp_col));

	KASSERT(r->tr_end.tp_row <= vb->vb_scr_size.tp_row,
	    ("vtbuf_fill_locked end.tp_row %d must be <= screen height %d",
		r->tr_end.tp_row, vb->vb_scr_size.tp_row));
	KASSERT(r->tr_end.tp_col <= vb->vb_scr_size.tp_col,
	    ("vtbuf_fill_locked end.tp_col %d must be <= screen width %d",
		r->tr_end.tp_col, vb->vb_scr_size.tp_col));

	VTBUF_LOCK(vb);
	vtbuf_fill(vb, r, c);
	vtbuf_dirty_locked(vb, r);
	VTBUF_UNLOCK(vb);
}