GUAC-687: Only update backing surface first if the destination rect cannot intersect the source rect.
This commit is contained in:
parent
3e0828d6da
commit
cad60299e1
@ -790,10 +790,12 @@ void guac_common_surface_copy(guac_common_surface* src, int sx, int sy, int w, i
|
|||||||
if (rect.width <= 0 || rect.height <= 0)
|
if (rect.width <= 0 || rect.height <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Update backing surface */
|
/* Update backing surface first only if destination rect cannot intersect source rect */
|
||||||
|
if (src != dst) {
|
||||||
__guac_common_surface_transfer(src, &sx, &sy, GUAC_TRANSFER_BINARY_SRC, dst, &rect);
|
__guac_common_surface_transfer(src, &sx, &sy, GUAC_TRANSFER_BINARY_SRC, dst, &rect);
|
||||||
if (rect.width <= 0 || rect.height <= 0)
|
if (rect.width <= 0 || rect.height <= 0)
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Defer if combining */
|
/* Defer if combining */
|
||||||
if (__guac_common_should_combine(dst, &rect, 1))
|
if (__guac_common_should_combine(dst, &rect, 1))
|
||||||
@ -808,6 +810,10 @@ void guac_common_surface_copy(guac_common_surface* src, int sx, int sy, int w, i
|
|||||||
dst->realized = 1;
|
dst->realized = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Update backing surface last if destination rect can intersect source rect */
|
||||||
|
if (src == dst)
|
||||||
|
__guac_common_surface_transfer(src, &sx, &sy, GUAC_TRANSFER_BINARY_SRC, dst, &rect);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void guac_common_surface_transfer(guac_common_surface* src, int sx, int sy, int w, int h,
|
void guac_common_surface_transfer(guac_common_surface* src, int sx, int sy, int w, int h,
|
||||||
@ -825,10 +831,12 @@ void guac_common_surface_transfer(guac_common_surface* src, int sx, int sy, int
|
|||||||
if (rect.width <= 0 || rect.height <= 0)
|
if (rect.width <= 0 || rect.height <= 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Update backing surface */
|
/* Update backing surface first only if destination rect cannot intersect source rect */
|
||||||
|
if (src != dst) {
|
||||||
__guac_common_surface_transfer(src, &sx, &sy, op, dst, &rect);
|
__guac_common_surface_transfer(src, &sx, &sy, op, dst, &rect);
|
||||||
if (rect.width <= 0 || rect.height <= 0)
|
if (rect.width <= 0 || rect.height <= 0)
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Defer if combining */
|
/* Defer if combining */
|
||||||
if (__guac_common_should_combine(dst, &rect, 1))
|
if (__guac_common_should_combine(dst, &rect, 1))
|
||||||
@ -842,6 +850,10 @@ void guac_common_surface_transfer(guac_common_surface* src, int sx, int sy, int
|
|||||||
dst->realized = 1;
|
dst->realized = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Update backing surface last if destination rect can intersect source rect */
|
||||||
|
if (src == dst)
|
||||||
|
__guac_common_surface_transfer(src, &sx, &sy, op, dst, &rect);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void guac_common_surface_rect(guac_common_surface* surface,
|
void guac_common_surface_rect(guac_common_surface* surface,
|
||||||
|
Loading…
Reference in New Issue
Block a user