diff options
-rw-r--r-- | sesman/session.c | 11 | ||||
-rw-r--r-- | xup/xup.c | 16 |
2 files changed, 27 insertions, 0 deletions
diff --git a/sesman/session.c b/sesman/session.c index 36262ad6..8292482c 100644 --- a/sesman/session.c +++ b/sesman/session.c @@ -77,6 +77,17 @@ session_get_bydata(char* name, int width, int height, int bpp, int type) while (tmp != 0) { + if (type == SESMAN_SESSION_TYPE_XRDP) + { + /* only name need to match for X11rdp, it can resize */ + if (g_strncmp(name, tmp->item->name, 255) == 0 && + tmp->item->type == type) + { + /*THREAD-FIX release chain lock */ + lock_chain_release(); + return tmp->item; + } + } if (g_strncmp(name, tmp->item->name, 255) == 0 && tmp->item->width == width && tmp->item->height == height && @@ -206,6 +206,22 @@ lib_mod_connect(struct mod* mod) init_stream(s, 8192); s_push_layer(s, iso_hdr, 4); out_uint16_le(s, 103); + out_uint32_le(s, 300); + out_uint32_le(s, mod->width); + out_uint32_le(s, mod->height); + out_uint32_le(s, mod->bpp); + out_uint32_le(s, 0); + s_mark_end(s); + len = (int)(s->end - s->data); + s_pop_layer(s, iso_hdr); + out_uint32_le(s, len); + lib_send(mod, s->data, len); + } + if (error == 0) + { + init_stream(s, 8192); + s_push_layer(s, iso_hdr, 4); + out_uint16_le(s, 103); out_uint32_le(s, 200); /* x and y */ i = 0; |