summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Sorg <jay.sorg@gmail.com>2013-03-12 20:04:18 -0700
committerJay Sorg <jay.sorg@gmail.com>2013-03-12 20:04:18 -0700
commita47a3cee1af35b404df371ad0d19eee1cdd943c7 (patch)
treeca8d7408234313c89970a86b3cb9f0a350582ff6
parentcf5646c472679b16b39cfdeb18382a3d40745b85 (diff)
downloadxrdp-proprietary-a47a3cee1af35b404df371ad0d19eee1cdd943c7.tar.gz
xrdp-proprietary-a47a3cee1af35b404df371ad0d19eee1cdd943c7.zip
libxrdp: started adding new(color) cursor support
-rw-r--r--common/xrdp_client_info.h3
-rw-r--r--libxrdp/xrdp_rdp.c19
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;
}