summaryrefslogtreecommitdiffstats
path: root/xup
diff options
context:
space:
mode:
authorJay Sorg <jay.sorg@gmail.com>2012-04-14 18:19:43 -0700
committerJay Sorg <jay.sorg@gmail.com>2012-04-14 18:19:43 -0700
commitff6e8a12329016cb426640670047eb679403c62c (patch)
treebd443d70c415a4249419e686949e7ab232ca7dac /xup
parent6333cdd86564f103d1e500e9c2857663d8c68f81 (diff)
downloadxrdp-proprietary-ff6e8a12329016cb426640670047eb679403c62c.tar.gz
xrdp-proprietary-ff6e8a12329016cb426640670047eb679403c62c.zip
xorg: added start of X11rdp / xup caps
Diffstat (limited to 'xup')
-rw-r--r--xup/xup.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/xup/xup.c b/xup/xup.c
index 46683417..db51d66f 100644
--- a/xup/xup.c
+++ b/xup/xup.c
@@ -223,6 +223,24 @@ lib_mod_connect(struct mod* mod)
}
if (error == 0)
{
+ /* send version message */
+ init_stream(s, 8192);
+ s_push_layer(s, iso_hdr, 4);
+ out_uint16_le(s, 103);
+ out_uint32_le(s, 301);
+ out_uint32_le(s, 0);
+ out_uint32_le(s, 0);
+ out_uint32_le(s, 0);
+ out_uint32_le(s, 1);
+ 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)
+ {
+ /* send screen size message */
init_stream(s, 8192);
s_push_layer(s, iso_hdr, 4);
out_uint16_le(s, 103);
@@ -239,6 +257,7 @@ lib_mod_connect(struct mod* mod)
}
if (error == 0)
{
+ /* send invalidate message */
init_stream(s, 8192);
s_push_layer(s, iso_hdr, 4);
out_uint16_le(s, 103);
@@ -367,6 +386,7 @@ lib_mod_signal(struct mod* mod)
int y1;
int x2;
int y2;
+ char* phold;
char* bmpdata;
char cur_data[32 * (32 * 3)];
char cur_mask[32 * (32 / 8)];
@@ -476,6 +496,32 @@ lib_mod_signal(struct mod* mod)
}
}
}
+ else if (type == 2) /* caps */
+ {
+ g_writeln("lib_mod_signal: type 2 len %d\n", len);
+ init_stream(s, len);
+ rv = lib_recv(mod, s->data, len);
+ if (rv == 0)
+ {
+ for (index = 0; index < num_orders; index++)
+ {
+ phold = s->p;
+ in_uint16_le(s, type);
+ in_uint16_le(s, len);
+ switch (type)
+ {
+ default:
+ g_writeln("lib_mod_signal: unknown cap type %d len %d", type, len);
+ break;
+ }
+ s->p = phold + len;
+ }
+ }
+ }
+ else
+ {
+ g_writeln("unknown type %d", type);
+ }
}
free_stream(s);
LIB_DEBUG(mod, "out lib_mod_signal");