1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
--- rdesktop-1.3.1/rdesktop.c.orig 2004-03-08 18:02:58.000000000 +0100
+++ rdesktop-1.3.1/rdesktop.c 2004-03-09 22:32:19.000000000 +0100
@@ -27,6 +27,7 @@
#include <sys/time.h> /* gettimeofday */
#include <sys/times.h> /* times */
#include <errno.h>
+#include <X11/Xlib.h> /* Window */
#include "rdesktop.h"
#ifdef EGD_SOCKET
@@ -68,6 +69,7 @@
BOOL g_console_session = False;
BOOL g_numlock_sync = False;
extern BOOL g_owncolmap;
+extern Window g_embed_wnd;
#ifdef WITH_RDPSND
BOOL g_rdpsnd = False;
@@ -112,6 +114,7 @@
fprintf(stderr, " -S: caption button size (single application mode)\n");
fprintf(stderr, " -T: window title\n");
fprintf(stderr, " -N: enable numlock synchronisation\n");
+ fprintf(stderr, " -X: embed into another window with a given id.\n");
fprintf(stderr, " -a: connection colour depth\n");
fprintf(stderr, " -r: enable specified device redirection (currently: sound)\n");
fprintf(stderr, " -0: attach to console\n");
@@ -224,6 +227,7 @@
prompt_password = False;
domain[0] = password[0] = shell[0] = directory[0] = 0;
strcpy(keymapname, "en-us");
+ g_embed_wnd = 0;
#ifdef RDP2VNC
#define VNCOPT "V:Q:"
@@ -231,7 +235,7 @@
#define VNCOPT
#endif
- while ((c = getopt(argc, argv, VNCOPT "u:d:s:c:p:n:k:g:fbeEmCDKS:T:Na:r:045h?")) != -1)
+ while ((c = getopt(argc, argv, VNCOPT "u:d:s:c:p:n:k:g:fbeEmCDKS:T:NX:a:r:045h?")) != -1)
{
switch (c)
{
@@ -374,6 +378,10 @@
g_numlock_sync = True;
break;
+ case 'X':
+ g_embed_wnd = strtod(optarg, NULL);
+ break;
+
case 'a':
g_server_bpp = strtol(optarg, NULL, 10);
if (g_server_bpp != 8 && g_server_bpp != 16 && g_server_bpp != 15
--- rdesktop-1.3.1/xwin.c.orig 2004-03-08 18:02:58.000000000 +0100
+++ rdesktop-1.3.1/xwin.c 2004-03-10 16:17:59.000000000 +0100
@@ -41,6 +41,7 @@
static int g_x_socket;
static Screen *g_screen;
Window g_wnd;
+Window g_embed_wnd;
BOOL g_enable_compose = False;
static GC g_gc;
static BOOL g_gc_initialized = False;
@@ -929,6 +930,11 @@
XFree(sizehints);
}
+ if ( g_embed_wnd )
+ {
+ XReparentWindow(g_display, g_wnd, g_embed_wnd, 0, 0);
+ }
+
input_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask |
VisibilityChangeMask | FocusChangeMask;
|