summaryrefslogtreecommitdiffstats
path: root/xrdp/xrdp_cache.c
diff options
context:
space:
mode:
authorJay Sorg <jay.sorg@gmail.com>2012-07-23 11:12:39 -0700
committerJay Sorg <jay.sorg@gmail.com>2012-07-23 11:12:39 -0700
commit6d539b8e2211eabb33ea8dd6a289a5588c85b00d (patch)
treea2c560915398a4c30768363582323549c99ee579 /xrdp/xrdp_cache.c
parent4e92468262577e37586ec8e12f937ef909c51529 (diff)
downloadxrdp-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.c42
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);
}