mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice-common
synced 2025-12-26 14:18:36 +00:00
spice: server: change update_area command
The new command return dirty area to be used by users that want spice to render localy or into some framebuffer (sdl / vnc) Signed-off-by: Izik Eidus <ieidus@redhat.com>
This commit is contained in:
parent
92e30df45c
commit
b080f39fd1
@ -363,6 +363,31 @@ SpiceRect *region_dup_rects(const QRegion *rgn, uint32_t *num_rects)
|
||||
return rects;
|
||||
}
|
||||
|
||||
void region_ret_rects(const QRegion *rgn, SpiceRect *rects, uint32_t num_rects)
|
||||
{
|
||||
pixman_box32_t *boxes;
|
||||
int n, i;
|
||||
|
||||
boxes = pixman_region32_rectangles((pixman_region32_t *)rgn, &n);
|
||||
for (i = 0; i < n && i < num_rects; i++) {
|
||||
rects[i].left = boxes[i].x1;
|
||||
rects[i].top = boxes[i].y1;
|
||||
rects[i].right = boxes[i].x2;
|
||||
rects[i].bottom = boxes[i].y2;
|
||||
}
|
||||
|
||||
if (i && i != n) {
|
||||
int x;
|
||||
|
||||
for (x = 0; x < (n - num_rects); ++x) {
|
||||
rects[i - 1].left = MIN(rects[i - 1].left, boxes[i + x].x1);
|
||||
rects[i - 1].top = MIN(rects[i - 1].top, boxes[i + x].y1);
|
||||
rects[i - 1].right = MAX(rects[i - 1].right, boxes[i + x].x2);
|
||||
rects[i - 1].bottom = MAX(rects[i - 1].bottom, boxes[i + x].y2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int region_is_equal(const QRegion *rgn1, const QRegion *rgn2)
|
||||
{
|
||||
|
||||
@ -36,6 +36,7 @@ void region_clear(QRegion *rgn);
|
||||
void region_destroy(QRegion *rgn);
|
||||
void region_clone(QRegion *dest, const QRegion *src);
|
||||
SpiceRect *region_dup_rects(const QRegion *rgn, uint32_t *num_rects);
|
||||
void region_ret_rects(const QRegion *rgn, SpiceRect *rects, uint32_t num_rects);
|
||||
|
||||
int region_test(const QRegion *rgn, const QRegion *other_rgn, int query);
|
||||
int region_is_valid(const QRegion *rgn);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user