[Spice-devel] [spice-server v2 1/3] dcc: Fix QUIC fallback in get_compression_for_bitmap()
Frediano Ziglio
fziglio at redhat.com
Fri Jul 20 11:38:33 UTC 2018
>
> There was a small regression introduced in get_compression_for_bitmap()
> by f401eb07f dcc: Rewrite dcc_image_compress.
> If SPICE_IMAGE_COMPRESSION_AUTO_GLZ is specified, and the bitmap has a
> stride which is bigger than its width (ie it has padding), then
> get_compression_for_bitmap() will return SPICE_IMAGE_COMPRESSION_OFF
> while in that case, we used to use QUIC for compression.
>
> This happens because that function in the AUTO_GLZ case first checks if
> QUIC should be used, if not, it decides to use GLZ, but then decides it
> can't because of the stride, so falls back to OFF, while it used to
> fall back to QUIC.
>
> This commit only slightly reworks a preexisting if (!can_lz_compress())
> check so that it's unconditional rather than depending on the previous
> checks having been unsuccessful.
>
> This issue could be observed by using a spice-html5 without support for
> uncompressed bitmaps with end-of-line padding by simply starting a f28
> VM and connecting to it/moving the mouse cursor in it.
Acked-by: Frediano Ziglio <fziglio at redhat.com>
Frediano
> ---
> server/dcc.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/server/dcc.c b/server/dcc.c
> index 44d8fdd75..0468e7213 100644
> --- a/server/dcc.c
> +++ b/server/dcc.c
> @@ -796,8 +796,10 @@ static SpiceImageCompression
> get_compression_for_bitmap(SpiceBitmap *bitmap,
> bitmap_get_graduality_level(bitmap) ==
> BITMAP_GRADUAL_HIGH) {
> return SPICE_IMAGE_COMPRESSION_QUIC;
> }
> - } else if (!can_lz_compress(bitmap) ||
> - drawable->copy_bitmap_graduality ==
> BITMAP_GRADUAL_HIGH) {
> + } else if (drawable->copy_bitmap_graduality ==
> BITMAP_GRADUAL_HIGH) {
> + return SPICE_IMAGE_COMPRESSION_QUIC;
> + }
> + if (!can_lz_compress(bitmap)) {
> return SPICE_IMAGE_COMPRESSION_QUIC;
> }
> }
More information about the Spice-devel
mailing list