1 | Index: ioemu/vnc.c |
---|
2 | =================================================================== |
---|
3 | --- ioemu.orig/vnc.c 2007-05-03 10:24:06.000000000 +0100 |
---|
4 | +++ ioemu/vnc.c 2007-05-03 10:24:06.000000000 +0100 |
---|
5 | @@ -1189,3 +1189,31 @@ |
---|
6 | |
---|
7 | vnc_dpy_resize(vs->ds, 640, 400); |
---|
8 | } |
---|
9 | + |
---|
10 | +int vnc_start_viewer(int port) |
---|
11 | +{ |
---|
12 | + int pid, i, open_max; |
---|
13 | + char s[16]; |
---|
14 | + |
---|
15 | + sprintf(s, ":%d", port); |
---|
16 | + |
---|
17 | + switch (pid = fork()) { |
---|
18 | + case -1: |
---|
19 | + fprintf(stderr, "vncviewer failed fork\n"); |
---|
20 | + exit(1); |
---|
21 | + |
---|
22 | + case 0: /* child */ |
---|
23 | + open_max = sysconf(_SC_OPEN_MAX); |
---|
24 | + for (i = 0; i < open_max; i++) |
---|
25 | + if (i != STDIN_FILENO && |
---|
26 | + i != STDOUT_FILENO && |
---|
27 | + i != STDERR_FILENO) |
---|
28 | + close(i); |
---|
29 | + execlp("vncviewer", "vncviewer", s, NULL); |
---|
30 | + fprintf(stderr, "vncviewer execlp failed\n"); |
---|
31 | + exit(1); |
---|
32 | + |
---|
33 | + default: |
---|
34 | + return pid; |
---|
35 | + } |
---|
36 | +} |
---|
37 | Index: ioemu/vl.c |
---|
38 | =================================================================== |
---|
39 | --- ioemu.orig/vl.c 2007-05-03 10:24:05.000000000 +0100 |
---|
40 | +++ ioemu/vl.c 2007-05-03 10:24:06.000000000 +0100 |
---|
41 | @@ -121,6 +121,7 @@ |
---|
42 | int bios_size; |
---|
43 | static DisplayState display_state; |
---|
44 | int nographic; |
---|
45 | +int vncviewer; |
---|
46 | const char* keyboard_layout = NULL; |
---|
47 | int64_t ticks_per_sec; |
---|
48 | int boot_device = 'c'; |
---|
49 | @@ -5415,6 +5416,7 @@ |
---|
50 | #endif |
---|
51 | "-loadvm file start right away with a saved state (loadvm in monitor)\n" |
---|
52 | "-vnc display start a VNC server on display\n" |
---|
53 | + "-vncviewer start a vncviewer process for this domain\n" |
---|
54 | "-acpi disable or enable ACPI of HVM domain \n" |
---|
55 | "\n" |
---|
56 | "During emulation, the following keys are useful:\n" |
---|
57 | @@ -5501,6 +5503,7 @@ |
---|
58 | QEMU_OPTION_d, |
---|
59 | QEMU_OPTION_vcpus, |
---|
60 | QEMU_OPTION_acpi, |
---|
61 | + QEMU_OPTION_vncviewer, |
---|
62 | }; |
---|
63 | |
---|
64 | typedef struct QEMUOption { |
---|
65 | @@ -5575,6 +5578,7 @@ |
---|
66 | { "usbdevice", HAS_ARG, QEMU_OPTION_usbdevice }, |
---|
67 | { "smp", HAS_ARG, QEMU_OPTION_smp }, |
---|
68 | { "vnc", HAS_ARG, QEMU_OPTION_vnc }, |
---|
69 | + { "vncviewer", 0, QEMU_OPTION_vncviewer }, |
---|
70 | |
---|
71 | /* temporary options */ |
---|
72 | { "usb", 0, QEMU_OPTION_usb }, |
---|
73 | @@ -5933,6 +5937,7 @@ |
---|
74 | #endif |
---|
75 | snapshot = 0; |
---|
76 | nographic = 0; |
---|
77 | + vncviewer = 0; |
---|
78 | kernel_filename = NULL; |
---|
79 | kernel_cmdline = ""; |
---|
80 | #ifdef TARGET_PPC |
---|
81 | @@ -6328,6 +6333,9 @@ |
---|
82 | case QEMU_OPTION_acpi: |
---|
83 | acpi_enabled = 1; |
---|
84 | break; |
---|
85 | + case QEMU_OPTION_vncviewer: |
---|
86 | + vncviewer++; |
---|
87 | + break; |
---|
88 | } |
---|
89 | } |
---|
90 | } |
---|
91 | @@ -6530,6 +6538,8 @@ |
---|
92 | dumb_display_init(ds); |
---|
93 | } else if (vnc_display != -1) { |
---|
94 | vnc_display_init(ds, vnc_display); |
---|
95 | + if (vncviewer) |
---|
96 | + vnc_start_viewer(vnc_display); |
---|
97 | } else { |
---|
98 | #if defined(CONFIG_SDL) |
---|
99 | sdl_display_init(ds, full_screen); |
---|
100 | Index: ioemu/vl.h |
---|
101 | =================================================================== |
---|
102 | --- ioemu.orig/vl.h 2007-05-03 10:24:05.000000000 +0100 |
---|
103 | +++ ioemu/vl.h 2007-05-03 10:24:06.000000000 +0100 |
---|
104 | @@ -786,6 +786,7 @@ |
---|
105 | |
---|
106 | /* vnc.c */ |
---|
107 | void vnc_display_init(DisplayState *ds, int display); |
---|
108 | +int vnc_start_viewer(int port); |
---|
109 | |
---|
110 | /* ide.c */ |
---|
111 | #define MAX_DISKS 4 |
---|