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
This commit is contained in:
+8
-25
@@ -541,16 +541,21 @@ 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)) {
|
||||
@@ -563,28 +568,6 @@ rfb_send_screen(struct rfb_softc *rc, int cfd, int all)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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];
|
||||
crc_p[x] = 1;
|
||||
changes++;
|
||||
} else {
|
||||
crc_p[x] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If number of changes is > THRESH percent, send the whole screen */
|
||||
|
||||
Reference in New Issue
Block a user