svn commit: r347406 - stable/11/usr.sbin/bhyve

John Baldwin jhb at FreeBSD.org
Thu May 9 20:30:36 UTC 2019


Author: jhb
Date: Thu May  9 20:30:35 2019
New Revision: 347406
URL: https://svnweb.freebsd.org/changeset/base/347406

Log:
  MFC 333235:
  Allow arbitrary numbers of columns for VNC server screen resolution.
  
  The prior code only allowed multiples of 32 for the
  numbers of columns. Remove this restriction to allow
  a forthcoming UEFI firmware update to allow arbitrary
  x,y resolutions.
  
  (the code for handling rows already supported non mult-32 values)

Modified:
  stable/11/usr.sbin/bhyve/rfb.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/usr.sbin/bhyve/rfb.c
==============================================================================
--- stable/11/usr.sbin/bhyve/rfb.c	Thu May  9 19:03:52 2019	(r347405)
+++ stable/11/usr.sbin/bhyve/rfb.c	Thu May  9 20:30:35 2019	(r347406)
@@ -544,40 +544,23 @@ rfb_send_screen(struct rfb_softc *rc, int cfd, int all
 		}
 
 		for (x = 0; x < xcells; x++) {
+			if (x == (xcells - 1) && rem_x > 0)
+				cellwidth = rem_x;
+			else
+				cellwidth = PIX_PER_CELL;
+
 			if (rc->hw_crc)
 				crc_p[x] = fast_crc32(p,
-				             PIX_PER_CELL * sizeof(uint32_t),
+				             cellwidth * sizeof(uint32_t),
 				             crc_p[x]);
 			else
 				crc_p[x] = (uint32_t)crc32(crc_p[x],
 				             (Bytef *)p,
-				             PIX_PER_CELL * sizeof(uint32_t));
+				             cellwidth * sizeof(uint32_t));
 
-			p += PIX_PER_CELL;
+			p += cellwidth;
 
 			/* check for crc delta if last row in cell */
-			if ((y & PIXCELL_MASK) == PIXCELL_MASK || y == (h-1)) {
-				if (orig_crc[x] != crc_p[x]) {
-					orig_crc[x] = crc_p[x];
-					crc_p[x] = 1;
-					changes++;
-				} else {
-					crc_p[x] = 0;
-				}
-			}
-		}
-
-		if (rem_x) {
-			if (rc->hw_crc)
-				crc_p[x] = fast_crc32(p,
-				                    rem_x * sizeof(uint32_t),
-				                    crc_p[x]);
-			else
-				crc_p[x] = (uint32_t)crc32(crc_p[x],
-				                    (Bytef *)p,
-				                    rem_x * sizeof(uint32_t));
-			p += rem_x;
-
 			if ((y & PIXCELL_MASK) == PIXCELL_MASK || y == (h-1)) {
 				if (orig_crc[x] != crc_p[x]) {
 					orig_crc[x] = crc_p[x];


More information about the svn-src-stable mailing list