Re: [PATCH spice-server 1/2] red_worker: fix sending internal images with stride > bpp*width to lz compression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Looks good,

ACK series.

Regards,

Hans


On 11/28/2012 08:10 PM, Yonit Halperin wrote:
rhbz#876685

The current lz implementation does not support such bitmaps.
The following patch will actually prevent allocating stride > bpp*width
for internal images.
---
  server/red_worker.c | 26 +++++++++++++-------------
  1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/server/red_worker.c b/server/red_worker.c
index 54cad53..9bab003 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -8607,20 +8607,20 @@ static void red_marshall_image(RedChannelClient *rcc, SpiceMarshaller *m, ImageI

      comp_mode = display_channel->common.worker->image_compression;

-    if ((comp_mode == SPICE_IMAGE_COMPRESS_AUTO_LZ) ||
-        (comp_mode == SPICE_IMAGE_COMPRESS_AUTO_GLZ)) {
+    if (((comp_mode == SPICE_IMAGE_COMPRESS_AUTO_LZ) ||
+        (comp_mode == SPICE_IMAGE_COMPRESS_AUTO_GLZ)) && !_stride_is_extra(&bitmap)) {
+
          if (BITMAP_FMT_HAS_GRADUALITY(item->image_format)) {
-            if (!_stride_is_extra(&bitmap)) {
-                BitmapGradualType grad_level;
-                grad_level = _get_bitmap_graduality_level(display_channel->common.worker,
-                                                          &bitmap,
-                                                          worker->mem_slots.internal_groupslot_id);
-                if (grad_level == BITMAP_GRADUAL_HIGH) {
-                    // if we use lz for alpha, the stride can't be extra
-                    lossy_comp = display_channel->enable_jpeg && item->can_lossy;
-                } else {
-                    lz_comp = TRUE;
-                }
+            BitmapGradualType grad_level;
+
+            grad_level = _get_bitmap_graduality_level(display_channel->common.worker,
+                                                      &bitmap,
+                                                      worker->mem_slots.internal_groupslot_id);
+            if (grad_level == BITMAP_GRADUAL_HIGH) {
+                // if we use lz for alpha, the stride can't be extra
+                lossy_comp = display_channel->enable_jpeg && item->can_lossy;
+            } else {
+                lz_comp = TRUE;
              }
          } else {
              lz_comp = TRUE;

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]