svn commit: r333235 - head/usr.sbin/bhyve
Peter Grehan
grehan at FreeBSD.org
Fri May 4 01:36:50 UTC 2018
Author: grehan
Date: Fri May 4 01:36:49 2018
New Revision: 333235
URL: https://svnweb.freebsd.org/changeset/base/333235
Log:
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)
Reviewed by: Leon Dang (original author)
MFC after: 3 weeks
Differential Revision: https://reviews.freebsd.org/D15274
Modified:
head/usr.sbin/bhyve/rfb.c
Modified: head/usr.sbin/bhyve/rfb.c
==============================================================================
--- head/usr.sbin/bhyve/rfb.c Fri May 4 00:56:41 2018 (r333234)
+++ head/usr.sbin/bhyve/rfb.c Fri May 4 01:36:49 2018 (r333235)
@@ -541,40 +541,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-head
mailing list