[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemacs-commit] qemacs qe.h qe.c
From: |
Charlie Gordon |
Subject: |
[Qemacs-commit] qemacs qe.h qe.c |
Date: |
Tue, 18 Apr 2017 10:26:39 -0400 (EDT) |
CVSROOT: /sources/qemacs
Module name: qemacs
Changes by: Charlie Gordon <chqrlie> 17/04/18 10:26:39
Modified files:
. : qe.h qe.c
Log message:
display: improve crc formula to avoid trivial collisions
- use 64 bit checksum values
- use simple formula with fewer collisions.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.254&r2=1.255
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.272&r2=1.273
Patches:
Index: qe.h
===================================================================
RCS file: /sources/qemacs/qemacs/qe.h,v
retrieving revision 1.254
retrieving revision 1.255
diff -u -b -r1.254 -r1.255
--- qe.h 18 Apr 2017 09:14:55 -0000 1.254
+++ qe.h 18 Apr 2017 14:26:39 -0000 1.255
@@ -1313,7 +1313,7 @@
/* contains all the information necessary to uniquely identify a line,
to avoid displaying it */
typedef struct QELineShadow {
- unsigned int crc;
+ uint64_t crc;
int x;
short y;
short height;
Index: qe.c
===================================================================
RCS file: /sources/qemacs/qemacs/qe.c,v
retrieving revision 1.272
retrieving revision 1.273
diff -u -b -r1.272 -r1.273
--- qe.c 18 Apr 2017 09:14:55 -0000 1.272
+++ qe.c 18 Apr 2017 14:26:39 -0000 1.273
@@ -3100,7 +3100,7 @@
/* CRC to optimize redraw. */
/* XXX: is it safe enough ? */
-static unsigned int compute_crc(const void *p, int size, unsigned int sum)
+static uint64_t compute_crc(const void *p, int size, uint64_t sum)
{
const u8 *data = (const u8 *)p;
@@ -3111,17 +3111,20 @@
* B123456789012345678901234567890 A123456789012345678901234567890
*/
while (((uintptr_t)data & 3) && size > 0) {
- sum += ((sum >> 31) & 1) + sum + *data;
+ //sum += ((sum >> 31) & 1) + sum + *data;
+ sum += sum + *data + (sum >> 32);
data++;
size--;
}
while (size >= 4) {
- sum += ((sum >> 31) & 1) + sum + *(const uint32_t *)(const void *)data;
+ //sum += ((sum >> 31) & 1) + sum + *(const uint32_t *)(const void
*)data;
+ sum += sum + *(const uint32_t *)(const void *)data + (sum >> 32);
data += 4;
size -= 4;
}
while (size > 0) {
- sum += ((sum >> 31) & 1) + sum + *data;
+ //sum += ((sum >> 31) & 1) + sum + *data;
+ sum += sum + *data + (sum >> 32);
data++;
size--;
}
@@ -3181,7 +3184,7 @@
&& ds->y < e->ytop + e->height) {
QEStyleDef styledef, default_style;
QELineShadow *ls;
- unsigned int crc;
+ uint64_t crc;
/* test if display needed */
crc = compute_crc(fragments, sizeof(*fragments) * nb_fragments, 0);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs qe.h qe.c,
Charlie Gordon <=