[PATCH 5/5] fbconsole: actually store rows/cols

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



struct fbc_priv has rows and cols fields, but they do not actually
store the rows and columns, but instead the actual values minus one.
Change this to make the code better understandable.

Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>
---
 drivers/video/fbconsole.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/video/fbconsole.c b/drivers/video/fbconsole.c
index d3615bc07f..01a091d07a 100644
--- a/drivers/video/fbconsole.c
+++ b/drivers/video/fbconsole.c
@@ -200,7 +200,7 @@ static void printchar(struct fbc_priv *priv, int c)
 		if (priv->x > 0) {
 			priv->x--;
 		} else if (priv->y > 0) {
-			priv->x = priv->cols;
+			priv->x = priv->cols - 1;
 			priv->y--;
 		}
 		break;
@@ -226,26 +226,26 @@ static void printchar(struct fbc_priv *priv, int c)
 				priv->font->width, priv->font->height);
 
 		priv->x++;
-		if (priv->x > priv->cols) {
+		if (priv->x >= priv->cols) {
 			priv->y++;
 			priv->x = 0;
 		}
 	}
 
-	if (priv->y > priv->rows) {
+	if (priv->y >= priv->rows) {
 		void *buf;
 		void *adr;
 		u32 line_length = priv->fb->line_length;
 		int line_height = line_length * priv->font->height;
 		int width = priv->fb->xres - priv->margin.left - priv->margin.right;
-		int height = (priv->rows + 1) * priv->font->height;
+		int height = priv->rows * priv->font->height;
 
 		buf = gui_screen_render_buffer(priv->sc);
 		adr = buf + priv->margin.top * line_length;
 
 		if (!priv->margin.left && !priv->margin.right) {
-			memcpy(adr, adr + line_height, line_height * priv->rows);
-			memset(adr + line_height * priv->rows, 0, line_height);
+			memcpy(adr, adr + line_height, line_height * (priv->rows - 1));
+			memset(adr + line_height * (priv->rows - 1), 0, line_height);
 		} else {
 			int bpp = priv->fb->bits_per_pixel >> 3;
 			int y;
@@ -264,7 +264,7 @@ static void printchar(struct fbc_priv *priv, int c)
 
 		gu_screen_blit_area(priv->sc, priv->margin.left, priv->margin.top,
 				width, height);
-		priv->y = priv->rows;
+		priv->y = priv->rows - 1;
 	}
 
 	show_cursor(priv, priv->x, priv->y);
@@ -364,10 +364,10 @@ static void fbc_parse_csi(struct fbc_priv *priv)
 		show_cursor(priv, priv->x, priv->y);
 
 		pos = simple_strtoul(priv->csi, &end, 10);
-		priv->y = clamp(pos - 1, 0, (int) priv->rows);
+		priv->y = clamp(pos - 1, 0, (int) priv->rows - 1);
 
 		pos = simple_strtoul(end + 1, NULL, 10);
-		priv->x = clamp(pos - 1, 0, (int) priv->cols);
+		priv->x = clamp(pos - 1, 0, (int) priv->cols - 1);
 
 		show_cursor(priv, priv->x, priv->y);
 	case 'K':
@@ -469,8 +469,8 @@ static int setup_font(struct fbc_priv *priv)
 
 	priv->font = font;
 
-	priv->rows = height / priv->font->height - 1;
-	priv->cols = width / priv->font->width - 1;
+	priv->rows = height / priv->font->height;
+	priv->cols = width / priv->font->width;
 
 	return 0;
 }
@@ -495,7 +495,7 @@ static int fbc_open(struct console_device *cdev)
 	priv->state = LIT;
 
 	dev_info(priv->cdev.dev, "framebuffer console %dx%d activated\n",
-		priv->cols + 1, priv->rows + 1);
+		priv->cols, priv->rows);
 
 	priv->active = true;
 

-- 
2.39.5





[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux