summaryrefslogtreecommitdiffstats
path: root/libxrdp/xrdp_orders.c
diff options
context:
space:
mode:
authorJim Grandy <jgrandy@authentic8.com>2013-07-03 15:57:00 -0700
committerJim Grandy <jgrandy@authentic8.com>2013-08-22 12:52:24 -0700
commit45b0bc9f17f0788bdfe28c0ae687faa0bce9374f (patch)
treea2f2e71699615e2320cfb5ab0060ebde37cc3bc8 /libxrdp/xrdp_orders.c
parent1ae9a7f2b685a8c2bf052e7c1724811346189fb9 (diff)
downloadxrdp-proprietary-45b0bc9f17f0788bdfe28c0ae687faa0bce9374f.tar.gz
xrdp-proprietary-45b0bc9f17f0788bdfe28c0ae687faa0bce9374f.zip
Hand-apply patches (glyph cache) from Authentic8 branch: 653869c 30f23d4 74b015d 4e51e6d 2829087
Diffstat (limited to 'libxrdp/xrdp_orders.c')
-rw-r--r--libxrdp/xrdp_orders.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/libxrdp/xrdp_orders.c b/libxrdp/xrdp_orders.c
index 17e674af..38e59061 100644
--- a/libxrdp/xrdp_orders.c
+++ b/libxrdp/xrdp_orders.c
@@ -2020,15 +2020,25 @@ xrdp_orders_send_font(struct xrdp_orders *self,
int order_flags = 0;
int datasize = 0;
int len = 0;
+ int flags;
- datasize = FONT_DATASIZE(font_char);
+ if (font_char->bpp == 8) /* alpha font */
+ {
+ datasize = ((font_char->width + 3) & ~3) * font_char->height;
+ flags = 8 | 0x4000;
+ }
+ else
+ {
+ datasize = FONT_DATASIZE(font_char);
+ flags = 8;
+ }
xrdp_orders_check(self, datasize + 18);
self->order_count++;
order_flags = RDP_ORDER_STANDARD | RDP_ORDER_SECONDARY;
out_uint8(self->out_s, order_flags);
len = (datasize + 12) - 7; /* length after type minus 7 */
out_uint16_le(self->out_s, len);
- out_uint16_le(self->out_s, 8); /* flags */
+ out_uint16_le(self->out_s, flags);
out_uint8(self->out_s, RDP_ORDER_FONTCACHE); /* type */
out_uint8(self->out_s, font_index);
out_uint8(self->out_s, 1); /* num of chars */