diff --git a/libxrdp/libxrdp.c b/libxrdp/libxrdp.c index 4985bbe2..94eefaa9 100644 --- a/libxrdp/libxrdp.c +++ b/libxrdp/libxrdp.c @@ -635,11 +635,11 @@ libxrdp_orders_send_raw_bitmap2(struct xrdp_session* session, int EXPORT_CC libxrdp_orders_send_bitmap2(struct xrdp_session* session, int width, int height, int bpp, char* data, - int cache_id, int cache_idx) + int cache_id, int cache_idx, int hints) { return xrdp_orders_send_bitmap2((struct xrdp_orders*)session->orders, width, height, bpp, data, - cache_id, cache_idx); + cache_id, cache_idx, hints); } /*****************************************************************************/ diff --git a/libxrdp/libxrdp.h b/libxrdp/libxrdp.h index 99649a41..cb0637f7 100644 --- a/libxrdp/libxrdp.h +++ b/libxrdp/libxrdp.h @@ -383,7 +383,7 @@ xrdp_orders_send_raw_bitmap2(struct xrdp_orders* self, int APP_CC xrdp_orders_send_bitmap2(struct xrdp_orders* self, int width, int height, int bpp, char* data, - int cache_id, int cache_idx); + int cache_id, int cache_idx, int hints); int APP_CC xrdp_orders_send_brush(struct xrdp_orders* self, int width, int height, int bpp, int type, int size, char* data, int cache_id); diff --git a/libxrdp/libxrdpinc.h b/libxrdp/libxrdpinc.h index 648eb1f6..5bd9fffd 100644 --- a/libxrdp/libxrdpinc.h +++ b/libxrdp/libxrdpinc.h @@ -162,7 +162,7 @@ libxrdp_orders_send_raw_bitmap2(struct xrdp_session* session, int DEFAULT_CC libxrdp_orders_send_bitmap2(struct xrdp_session* session, int width, int height, int bpp, char* data, - int cache_id, int cache_idx); + int cache_id, int cache_idx, int hints); int DEFAULT_CC libxrdp_query_channel(struct xrdp_session* session, int index, char* channel_name, int* channel_flags); diff --git a/libxrdp/xrdp_orders.c b/libxrdp/xrdp_orders.c index 4a36e112..5efba951 100644 --- a/libxrdp/xrdp_orders.c +++ b/libxrdp/xrdp_orders.c @@ -1831,8 +1831,12 @@ xrdp_orders_send_raw_bitmap2(struct xrdp_orders* self, /*****************************************************************************/ static int xrdp_orders_send_as_jpeg(struct xrdp_orders* self, - int width, int height, int bpp) + int width, int height, int bpp, int hints) { + if (hints & 1) + { + return 0; + } if (bpp != 24) { return 0; @@ -1854,7 +1858,7 @@ xrdp_orders_send_as_jpeg(struct xrdp_orders* self, int APP_CC xrdp_orders_send_bitmap2(struct xrdp_orders* self, int width, int height, int bpp, char* data, - int cache_id, int cache_idx) + int cache_id, int cache_idx, int hints) { int order_flags = 0; int len = 0; @@ -1890,7 +1894,7 @@ xrdp_orders_send_bitmap2(struct xrdp_orders* self, p = s->p; i = height; is_jpeg = 0; - if (xrdp_orders_send_as_jpeg(self, width, height, bpp)) + if (xrdp_orders_send_as_jpeg(self, width, height, bpp, hints)) { lines_sending = xrdp_jpeg_compress(data, width, height, s, bpp, 16384, i - 1, temp_s, e); diff --git a/xrdp/xrdp_cache.c b/xrdp/xrdp_cache.c index 59c7c98b..32b32f72 100644 --- a/xrdp/xrdp_cache.c +++ b/xrdp/xrdp_cache.c @@ -280,7 +280,8 @@ xrdp_cache_add_bitmap(struct xrdp_cache* self, struct xrdp_bitmap* bitmap, { libxrdp_orders_send_bitmap2(self->session, bitmap->width, bitmap->height, bitmap->bpp, - bitmap->data, cache_id, cache_idx); + bitmap->data, cache_id, cache_idx, + hints); } else {