svn commit: r257074 - user/ed/newcons/sys/dev/vt

Aleksandr Rybalko ray at FreeBSD.org
Thu Oct 24 21:43:47 UTC 2013


Author: ray
Date: Thu Oct 24 21:43:46 2013
New Revision: 257074
URL: http://svnweb.freebsd.org/changeset/base/257074

Log:
  o Fix scroll calculations.
  o Make vthistory_seek to return amount of lines to update +on_top/-on_bottom of
      screen.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  user/ed/newcons/sys/dev/vt/vt_buf.c

Modified: user/ed/newcons/sys/dev/vt/vt_buf.c
==============================================================================
--- user/ed/newcons/sys/dev/vt/vt_buf.c	Thu Oct 24 21:43:18 2013	(r257073)
+++ user/ed/newcons/sys/dev/vt/vt_buf.c	Thu Oct 24 21:43:46 2013	(r257074)
@@ -54,13 +54,13 @@ static MALLOC_DEFINE(M_VTBUF, "vtbuf", "
 int
 vthistory_seek(struct vt_buf *vb, int offset, int whence)
 {
-	int top, bottom, roffset;
+	int diff, top, bottom, roffset;
 
 	/* No scrolling if not enabled. */
 	if ((vb->vb_flags & VBF_SCROLL) == 0) {
 		if (vb->vb_roffset != vb->vb_curroffset) {
 			vb->vb_roffset = vb->vb_curroffset;
-			return (1);
+			return (0xffff);
 		}
 		return (0); /* No changes */
 	}
@@ -75,14 +75,14 @@ vthistory_seek(struct vt_buf *vb, int of
 	roffset = vb->vb_roffset + vb->vb_history_size;
 	switch (whence) {
 	case VHS_SET:
-		roffset = offset;
+		roffset = offset + vb->vb_history_size;
 		break;
 	case VHS_CUR:
 		roffset += offset;
 		break;
 	case VHS_END:
 		/* Go to current offset. */
-		roffset = vb->vb_curroffset;
+		roffset = vb->vb_curroffset + vb->vb_history_size;
 		break;
 	}
 
@@ -92,8 +92,14 @@ vthistory_seek(struct vt_buf *vb, int of
 	roffset %= vb->vb_history_size;
 
 	if (vb->vb_roffset != roffset) {
+		diff = vb->vb_roffset - roffset;
 		vb->vb_roffset = roffset;
-		return (1); /* Offset changed, please update sceen. */
+		/*
+		 * Offset changed, please update Nth lines on sceen.
+		 * +N - Nth lines at top;
+		 * -N - Nth lines at bottom.
+		 */
+		return (diff);
 	}
 	return (0); /* No changes */
 }


More information about the svn-src-user mailing list