diff options
author | Alexander Larsson <alexl@redhat.com> | 2010-07-05 20:45:13 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2010-07-05 20:45:13 +0200 |
commit | f39d64f40bca094396d5002dcfcd38eaa281c9af (patch) | |
tree | 5e25c5d01bf1bd390f119ec3146f4f6b56dee2b4 /server | |
parent | 6dcf43912e752b8c61199017718ccfb067b45576 (diff) | |
download | spice-f39d64f40bca094396d5002dcfcd38eaa281c9af.tar.gz spice-f39d64f40bca094396d5002dcfcd38eaa281c9af.tar.xz spice-f39d64f40bca094396d5002dcfcd38eaa281c9af.zip |
Convert SpicePath.segments to a pointer array
Diffstat (limited to 'server')
-rw-r--r-- | server/red_parse_qxl.c | 9 | ||||
-rw-r--r-- | server/red_worker.c | 7 |
2 files changed, 8 insertions, 8 deletions
diff --git a/server/red_parse_qxl.c b/server/red_parse_qxl.c index d38cad7b..56f17dc8 100644 --- a/server/red_parse_qxl.c +++ b/server/red_parse_qxl.c @@ -153,7 +153,7 @@ static SpicePath *red_get_path(RedMemSlotInfo *slots, int group_id, bool free_data; QXLPath *qxl; SpicePath *red; - size_t size, mem_size, mem_size2, dsize; + size_t size, mem_size, mem_size2, dsize, segment_size; int n_segments; int i; uint32_t count; @@ -173,7 +173,8 @@ static SpicePath *red_get_path(RedMemSlotInfo *slots, int group_id, while (start < end) { n_segments++; count = start->count; - mem_size += sizeof(SpicePathSeg) + count * sizeof(SpicePointFix); + segment_size = sizeof(SpicePathSeg) + count * sizeof(SpicePointFix); + mem_size += sizeof(SpicePathSeg *) + SPICE_ALIGN(segment_size, 4); start = (QXLPathSeg*)(&start->points[count]); } @@ -182,11 +183,11 @@ static SpicePath *red_get_path(RedMemSlotInfo *slots, int group_id, start = (QXLPathSeg*)data; end = (QXLPathSeg*)(data + size); - seg = (SpicePathSeg*)red->segments; + seg = (SpicePathSeg*)&red->segments[n_segments]; n_segments = 0; mem_size2 = sizeof(*red); while (start < end) { - n_segments++; + red->segments[n_segments++] = seg; count = start->count; /* Protect against overflow in size calculations before diff --git a/server/red_worker.c b/server/red_worker.c index ff0a049e..255a46e7 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -2296,9 +2296,10 @@ static int is_equal_path(RedWorker *worker, SpicePath *path1, SpicePath *path2) if (path1->num_segments != path2->num_segments) return FALSE; - seg1 = (SpicePathSeg*)&path1->segments[0]; - seg2 = (SpicePathSeg*)&path2->segments[0]; for (i = 0; i < path1->num_segments; i++) { + seg1 = path1->segments[i]; + seg2 = path2->segments[i]; + if (seg1->flags != seg2->flags || seg1->count != seg2->count) { return FALSE; @@ -2309,8 +2310,6 @@ static int is_equal_path(RedWorker *worker, SpicePath *path1, SpicePath *path2) return FALSE; } } - seg1 = (SpicePathSeg*)(&seg1->points[seg1->count]); - seg2 = (SpicePathSeg*)(&seg2->points[seg2->count]); } return TRUE; |