diff options
| author | Jay Sorg <jay.sorg@gmail.com> | 2012-07-23 11:12:39 -0700 |
|---|---|---|
| committer | Jay Sorg <jay.sorg@gmail.com> | 2012-07-23 11:12:39 -0700 |
| commit | 6d539b8e2211eabb33ea8dd6a289a5588c85b00d (patch) | |
| tree | a2c560915398a4c30768363582323549c99ee579 /xrdp/xrdp_cache.c | |
| parent | 4e92468262577e37586ec8e12f937ef909c51529 (diff) | |
| download | xrdp-proprietary-6d539b8e2211eabb33ea8dd6a289a5588c85b00d.tar.gz xrdp-proprietary-6d539b8e2211eabb33ea8dd6a289a5588c85b00d.zip | |
user rfx for cache v3 if client supports
Diffstat (limited to 'xrdp/xrdp_cache.c')
| -rw-r--r-- | xrdp/xrdp_cache.c | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/xrdp/xrdp_cache.c b/xrdp/xrdp_cache.c index 9c708313..17316633 100644 --- a/xrdp/xrdp_cache.c +++ b/xrdp/xrdp_cache.c @@ -261,36 +261,46 @@ xrdp_cache_add_bitmap(struct xrdp_cache* self, struct xrdp_bitmap* bitmap, xrdp_bitmap_delete(self->bitmap_items[cache_id][cache_idx].bitmap); self->bitmap_items[cache_id][cache_idx].bitmap = bitmap; self->bitmap_items[cache_id][cache_idx].stamp = self->bitmap_stamp; - if (self->bitmap_cache_version == 0) /* orginal version */ + if (self->use_bitmap_comp) { - if (self->use_bitmap_comp) + if (self->bitmap_cache_version & 4) { - libxrdp_orders_send_bitmap(self->session, bitmap->width, - bitmap->height, bitmap->bpp, - bitmap->data, cache_id, cache_idx); - } - else - { - libxrdp_orders_send_raw_bitmap(self->session, bitmap->width, - bitmap->height, bitmap->bpp, - bitmap->data, cache_id, cache_idx); + if (libxrdp_orders_send_bitmap3(self->session, bitmap->width, + bitmap->height, bitmap->bpp, + bitmap->data, cache_id, cache_idx, + hints) == 0) + { + return MAKELONG(cache_idx, cache_id); + } } - } - else - { - if (self->use_bitmap_comp) + if (self->bitmap_cache_version & 2) { libxrdp_orders_send_bitmap2(self->session, bitmap->width, bitmap->height, bitmap->bpp, bitmap->data, cache_id, cache_idx, hints); } - else + else if (self->bitmap_cache_version & 1) + { + libxrdp_orders_send_bitmap(self->session, bitmap->width, + bitmap->height, bitmap->bpp, + bitmap->data, cache_id, cache_idx); + } + } + else + { + if (self->bitmap_cache_version & 2) { libxrdp_orders_send_raw_bitmap2(self->session, bitmap->width, bitmap->height, bitmap->bpp, bitmap->data, cache_id, cache_idx); } + else if (self->bitmap_cache_version & 1) + { + libxrdp_orders_send_raw_bitmap(self->session, bitmap->width, + bitmap->height, bitmap->bpp, + bitmap->data, cache_id, cache_idx); + } } return MAKELONG(cache_idx, cache_id); } |
