summaryrefslogtreecommitdiffstats
path: root/xup
diff options
context:
space:
mode:
Diffstat (limited to 'xup')
-rw-r--r--xup/xup.c28
-rw-r--r--xup/xup.h7
2 files changed, 32 insertions, 3 deletions
diff --git a/xup/xup.c b/xup/xup.c
index 15498e64..27063366 100644
--- a/xup/xup.c
+++ b/xup/xup.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.
@@ -489,6 +489,29 @@ process_server_window_delete(struct mod *mod, struct stream *s)
/******************************************************************************/
/* return error */
+static int APP_CC
+process_server_set_pointer_ex(struct mod *mod, struct stream *s)
+{
+ int rv;
+ int x;
+ int y;
+ int bpp;
+ int Bpp;
+ char cur_data[32 * (32 * 4)];
+ char cur_mask[32 * (32 / 8)];
+
+ in_sint16_le(s, x);
+ in_sint16_le(s, y);
+ in_uint16_le(s, bpp);
+ Bpp = (bpp == 0) ? 3 : (bpp + 7) / 8;
+ in_uint8a(s, cur_data, 32 * (32 * Bpp));
+ in_uint8a(s, cur_mask, 32 * (32 / 8));
+ rv = mod->server_set_cursor_ex(mod, x, y, cur_data, cur_mask, bpp);
+ return rv;
+}
+
+/******************************************************************************/
+/* return error */
static int
lib_mod_process_orders(struct mod *mod, int type, struct stream *s)
{
@@ -630,6 +653,9 @@ lib_mod_process_orders(struct mod *mod, int type, struct stream *s)
case 26: /* server_window_delete */
rv = process_server_window_delete(mod, s);
break;
+ case 51: /* server_set_pointer_ex */
+ rv = process_server_set_pointer_ex(mod, s);
+ break;
default:
g_writeln("lib_mod_process_orders: unknown order type %d", type);
rv = 0;
diff --git a/xup/xup.h b/xup/xup.h
index ae98c5ff..a7956915 100644
--- a/xup/xup.h
+++ b/xup/xup.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.
@@ -117,7 +117,10 @@ struct mod
int (*server_monitored_desktop)(struct mod* v,
struct rail_monitored_desktop_order* mdo,
int flags);
- tbus server_dumby[100 - 37]; /* align, 100 minus the number of server
+ int (*server_set_cursor_ex)(struct mod* v, int x, int y, char* data,
+ char* mask, int bpp);
+
+ tbus server_dumby[100 - 38]; /* align, 100 minus the number of server
functions above */
/* common */
tbus handle; /* pointer to self as long */