diff options
Diffstat (limited to 'xrdp')
-rw-r--r-- | xrdp/xrdp.ini | 3 | ||||
-rw-r--r-- | xrdp/xrdp_mm.c | 16 |
2 files changed, 17 insertions, 2 deletions
diff --git a/xrdp/xrdp.ini b/xrdp/xrdp.ini index 645ee024..e8a66c1f 100644 --- a/xrdp/xrdp.ini +++ b/xrdp/xrdp.ini @@ -5,7 +5,7 @@ bitmap_compression=yes port=3389 crypt_level=low channel_code=1 -max_bpp=16 +max_bpp=24 #black=000000 #grey=d6d3ce #dark_grey=808080 @@ -67,3 +67,4 @@ username=ask password=ask ip=127.0.0.1 port=-1 +xserverbpp=24 diff --git a/xrdp/xrdp_mm.c b/xrdp/xrdp_mm.c index cd3c1ebd..abee2c12 100644 --- a/xrdp/xrdp_mm.c +++ b/xrdp/xrdp_mm.c @@ -110,6 +110,7 @@ xrdp_mm_send_login(struct xrdp_mm* self) int rv = 0; int index = 0; int count = 0; + int xserverbpp; char * username = (char *)NULL; char * password = (char *)NULL; char * name = (char *)NULL; @@ -120,6 +121,7 @@ xrdp_mm_send_login(struct xrdp_mm* self) username = 0; password = 0; self->code = 0; + xserverbpp = 0; count = self->login_names->count; for (index = 0; index < count; index++) { @@ -141,6 +143,10 @@ xrdp_mm_send_login(struct xrdp_mm* self) self->code = 10; } } + else if (g_strcasecmp(name, "xserverbpp") == 0) + { + xserverbpp = g_atoi(value); + } } if ((username == 0) || (password == 0)) { @@ -161,7 +167,15 @@ xrdp_mm_send_login(struct xrdp_mm* self) out_uint8a(s, password, index); out_uint16_be(s, self->wm->screen->width); out_uint16_be(s, self->wm->screen->height); - out_uint16_be(s, self->wm->screen->bpp); + + if (xserverbpp > 0) + { + out_uint16_be(s, xserverbpp); + } + else + { + out_uint16_be(s, self->wm->screen->bpp); + } /* send domain */ index = g_strlen(self->wm->client_info->domain); |