added 15 and 24bpp support and changes for reconnect / resize

This commit is contained in:
Jay Sorg 2011-09-10 21:13:54 -07:00
parent 12ce9c136f
commit 5972c136bf
3 changed files with 20 additions and 5 deletions

View File

@ -5,7 +5,7 @@ bitmap_compression=yes
port=3389 port=3389
crypt_level=low crypt_level=low
channel_code=1 channel_code=1
max_bpp=16 max_bpp=24
#black=000000 #black=000000
#grey=d6d3ce #grey=d6d3ce
#dark_grey=808080 #dark_grey=808080
@ -67,3 +67,4 @@ username=ask
password=ask password=ask
ip=127.0.0.1 ip=127.0.0.1
port=-1 port=-1
xserverbpp=24

View File

@ -110,6 +110,7 @@ xrdp_mm_send_login(struct xrdp_mm* self)
int rv = 0; int rv = 0;
int index = 0; int index = 0;
int count = 0; int count = 0;
int xserverbpp;
char * username = (char *)NULL; char * username = (char *)NULL;
char * password = (char *)NULL; char * password = (char *)NULL;
char * name = (char *)NULL; char * name = (char *)NULL;
@ -120,6 +121,7 @@ xrdp_mm_send_login(struct xrdp_mm* self)
username = 0; username = 0;
password = 0; password = 0;
self->code = 0; self->code = 0;
xserverbpp = 0;
count = self->login_names->count; count = self->login_names->count;
for (index = 0; index < count; index++) for (index = 0; index < count; index++)
{ {
@ -141,6 +143,10 @@ xrdp_mm_send_login(struct xrdp_mm* self)
self->code = 10; self->code = 10;
} }
} }
else if (g_strcasecmp(name, "xserverbpp") == 0)
{
xserverbpp = g_atoi(value);
}
} }
if ((username == 0) || (password == 0)) if ((username == 0) || (password == 0))
{ {
@ -161,7 +167,15 @@ xrdp_mm_send_login(struct xrdp_mm* self)
out_uint8a(s, password, index); out_uint8a(s, password, index);
out_uint16_be(s, self->wm->screen->width); out_uint16_be(s, self->wm->screen->width);
out_uint16_be(s, self->wm->screen->height); out_uint16_be(s, self->wm->screen->height);
if (xserverbpp > 0)
{
out_uint16_be(s, xserverbpp);
}
else
{
out_uint16_be(s, self->wm->screen->bpp); out_uint16_be(s, self->wm->screen->bpp);
}
/* send domain */ /* send domain */
index = g_strlen(self->wm->client_info->domain); index = g_strlen(self->wm->client_info->domain);

View File

@ -140,11 +140,11 @@ lib_mod_connect(struct mod* mod)
mod->server_fill_rect(mod, 0, 0, mod->width, mod->height); mod->server_fill_rect(mod, 0, 0, mod->width, mod->height);
mod->server_end_update(mod); mod->server_end_update(mod);
mod->server_msg(mod, "started connecting", 0); mod->server_msg(mod, "started connecting", 0);
/* only support 8 and 16 bpp connections from rdp client */ /* only support 8, 15, 16, and 24 bpp connections from rdp client */
if (mod->bpp != 8 && mod->bpp != 16) if (mod->bpp != 8 && mod->bpp != 15 && mod->bpp != 16 && mod->bpp != 24)
{ {
mod->server_msg(mod, mod->server_msg(mod,
"error - only supporting 8 and 16 bpp rdp connections", 0); "error - only supporting 8, 15, 16, and 24 bpp rdp connections", 0);
LIB_DEBUG(mod, "out lib_mod_connect error"); LIB_DEBUG(mod, "out lib_mod_connect error");
return 1; return 1;
} }