diff options
author | Jay Sorg <jay.sorg@gmail.com> | 2013-03-12 20:04:18 -0700 |
---|---|---|
committer | Jay Sorg <jay.sorg@gmail.com> | 2013-03-12 20:04:18 -0700 |
commit | a47a3cee1af35b404df371ad0d19eee1cdd943c7 (patch) | |
tree | ca8d7408234313c89970a86b3cb9f0a350582ff6 | |
parent | cf5646c472679b16b39cfdeb18382a3d40745b85 (diff) | |
download | xrdp-proprietary-a47a3cee1af35b404df371ad0d19eee1cdd943c7.tar.gz xrdp-proprietary-a47a3cee1af35b404df371ad0d19eee1cdd943c7.zip |
libxrdp: started adding new(color) cursor support
-rw-r--r-- | common/xrdp_client_info.h | 3 | ||||
-rw-r--r-- | libxrdp/xrdp_rdp.c | 19 |
2 files changed, 19 insertions, 3 deletions
diff --git a/common/xrdp_client_info.h b/common/xrdp_client_info.h index a364927d..61daea7a 100644 --- a/common/xrdp_client_info.h +++ b/common/xrdp_client_info.h @@ -1,7 +1,7 @@ /** * xrdp: A Remote Desktop Protocol server. * - * Copyright (C) Jay Sorg 2004-2012 + * Copyright (C) Jay Sorg 2004-2013 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -87,6 +87,7 @@ struct xrdp_client_info char jpeg_prop[64]; int v3_codec_id; int use_bulk_comp; + int pointer_flags; /* 0 color, 1 new */ }; #endif diff --git a/libxrdp/xrdp_rdp.c b/libxrdp/xrdp_rdp.c index 7136e36a..9f238378 100644 --- a/libxrdp/xrdp_rdp.c +++ b/libxrdp/xrdp_rdp.c @@ -1,7 +1,7 @@ /** * xrdp: A Remote Desktop Protocol server. * - * Copyright (C) Jay Sorg 2004-2012 + * Copyright (C) Jay Sorg 2004-2013 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -958,11 +958,26 @@ xrdp_process_capset_pointercache(struct xrdp_rdp *self, struct stream *s, int len) { int i; + int colorPointerFlag; - in_uint8s(s, 2); /* color pointer */ + in_uint16_le(s, colorPointerFlag); + self->client_info.pointer_flags = colorPointerFlag; in_uint16_le(s, i); i = MIN(i, 32); self->client_info.pointer_cache_entries = i; + if (colorPointerFlag & 1) + { + g_writeln("xrdp_process_capset_pointercache: client supports " + "new(color) cursor"); + in_uint16_le(s, i); + i = MIN(i, 32); + self->client_info.pointer_cache_entries = i; + } + else + { + g_writeln("xrdp_process_capset_pointercache: client does not support " + "new(color) cursor"); + } return 0; } |