Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
L
libvncserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rasky
libvncserver
Commits
54906d73
Commit
54906d73
authored
Nov 28, 2005
by
runge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x11vnc: add -loop option.
parent
8eb18f6c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
915 additions
and
742 deletions
+915
-742
prepare_x11vnc_dist.sh
prepare_x11vnc_dist.sh
+3
-3
ChangeLog
x11vnc/ChangeLog
+3
-0
README
x11vnc/README
+784
-733
x11vnc.1
x11vnc/x11vnc.1
+13
-2
x11vnc.c
x11vnc/x11vnc.c
+112
-4
No files found.
prepare_x11vnc_dist.sh
View file @
54906d73
...
...
@@ -33,8 +33,8 @@ sed -e "s/Johannes.Schindelin@gmx.de/runge@karlrunge.com/gi" \
-e
"s/Johannes.Schindelin/Karl Runge/g"
\
-e
"s/a library to make writing a vnc server easy/a VNC server for the current X11 session/"
\
-e
"/^%description
$/
,/%description devel
$/
d"
\
-e
'/^Static libraries.*$/%description\
x11vnc is to X
windows
what WinVNC is to Windows, i.e. a server\
-e
'
s
/^Static libraries.*$/%description\
x11vnc is to X
Window System
what WinVNC is to Windows, i.e. a server\
which serves the current Xwindows desktop via RFB (VNC) protocol\
to the user.\
\
...
...
@@ -45,7 +45,7 @@ x11vnc was put together and is (actively ;-) maintained by\
Karl Runge <runge@karlrunge.com>\
\
%prep\
\1
/'
\
/'
\
>
x11vnc.spec.in
mv
libvncserver/Makefile.am libvncserver/Makefile.am.LibVNCServer
...
...
x11vnc/ChangeLog
View file @
54906d73
2005-11-28 Karl Runge <runge@karlrunge.com>
* x11vnc: add -loop option.
2005-11-25 Karl Runge <runge@karlrunge.com>
* x11vnc: throttle load if fb update requests not taking place.
* misc/x11vnc_pw: add utility script
...
...
x11vnc/README
View file @
54906d73
This source diff could not be displayed because it is too large. You can
view the blob
instead.
x11vnc/x11vnc.1
View file @
54906d73
.\" This file was automatically generated from x11vnc -help output.
.TH X11VNC "1" "
Octo
ber 2005" "x11vnc " "User Commands"
.TH X11VNC "1" "
Novem
ber 2005" "x11vnc " "User Commands"
.SH NAME
x11vnc - allow VNC connections to real X11 displays
version: 0.7.3, lastmod: 2005-1
0-22
version: 0.7.3, lastmod: 2005-1
1-28
.SH SYNOPSIS
.B x11vnc
[OPTION]...
...
...
@@ -237,6 +237,17 @@ disconnects, opposite of \fB-forever.\fR This is the Default.
Keep listening for more connections rather than exiting
as soon as the first client(s) disconnect. Same as \fB-many\fR
.PP
\fB-loop\fR
.IP
Create an outer loop restarting the x11vnc process
whenever it terminates. \fB-bg\fR and \fB-inetd\fR are ignored in
this mode. Useful for continuing even if the X server
terminates and restarts (you will need permission to
reconnect of course). Use, e.g., \fB-loop100\fR to sleep
100 millisecs between restarts, etc. Default is 2000ms
(i.e. 2 secs) Use, e.g. \fB-loop300,5\fR to sleep 300 ms
and only loop 5 times.
.PP
\fB-timeout\fR \fIn\fR
.IP
Exit unless a client connects within the first n seconds
...
...
x11vnc/x11vnc.c
View file @
54906d73
...
...
@@ -398,7 +398,7 @@ double xdamage_scheduled_mark = 0.0;
sraRegionPtr xdamage_scheduled_mark_region = NULL;
/* date +'lastmod: %Y-%m-%d' */
char lastmod[] = "0.7.3 lastmod: 2005-11-2
5
";
char lastmod[] = "0.7.3 lastmod: 2005-11-2
8
";
int hack_val = 0;
/* X display info */
...
...
@@ -23530,7 +23530,7 @@ static void nap_set(int tile_cnt) {
if(now > last_fb_bytes_sent + no_fbu_blank) {
if (debug_tiles > 1) {
printf("nap_set: nap_ok=1: now: %d last: %d\n",
now,
last_fb_bytes_sent);
(int) now, (int)
last_fb_bytes_sent);
}
nap_ok = 1;
}
...
...
@@ -29809,8 +29809,8 @@ void record_last_fb_update(void) {
if (rbs != rbs0) {
rbs0 = rbs;
if (debug_tiles > 1) {
printf("record_last_fb_update: %d %d\n",
now,
last_fb_bytes_sent);
printf("record_last_fb_update: %d %d\n",
(int) now, (int)
last_fb_bytes_sent);
}
last_fb_bytes_sent = now;
}
...
...
@@ -30328,6 +30328,14 @@ static void print_help(int mode) {
" disconnects, opposite of -forever. This is the Default.\n"
"-forever Keep listening for more connections rather than exiting\n"
" as soon as the first client(s) disconnect. Same as -many\n"
"-loop Create an outer loop restarting the x11vnc process\n"
" whenever it terminates. -bg and -inetd are ignored in\n"
" this mode. Useful for continuing even if the X server\n"
" terminates and restarts (you will need permission to\n"
" reconnect of course). Use, e.g., -loop100 to sleep\n"
" 100 millisecs between restarts, etc. Default is 2000ms\n"
" (i.e. 2 secs) Use, e.g. -loop300,5 to sleep 300 ms\n"
" and only loop 5 times.\n"
"-timeout n Exit unless a client connects within the first n seconds\n"
" after startup.\n"
"-inetd Launched by inetd(1): stdio instead of listening socket.\n"
...
...
@@ -32873,6 +32881,83 @@ void nopassword_warning_msg(int gotloc) {
#endif
}
void check_loop_mode(int argc, char* argv[]) {
int i;
int loop_mode = 0, loop_sleep = 2000, loop_max = 0;
for (i=1; i < argc; i++) {
char *p = argv[i];
if (strstr(p, "--") == p) {
p++;
}
if (strstr(p, "-loop") == p) {
char *q;
loop_mode = 1;
if ((q = strchr(p, ',')) != NULL) {
loop_max = atoi(q+1);
*q = '\0';
}
q = strpbrk(p, "0123456789");
if (q) {
loop_sleep = atoi(q);
if (loop_sleep <= 0) {
loop_sleep = 10;
}
}
}
}
if (loop_mode && getenv("X11VNC_LOOP_MODE") == NULL) {
#if LIBVNCSERVER_HAVE_FORK
char **argv2;
int k, i = 1;
set_env("X11VNC_LOOP_MODE", "1");
argv2 = (char **) malloc((argc+1)*sizeof(char *));
for (k=0; k < argc+1; k++) {
argv2[k] = NULL;
if (k < argc) {
argv2[k] = argv[k];
}
}
while (1) {
int status;
pid_t p;
fprintf(stderr, "\n --- x11vnc loop: %d ---\n\n", i++);
fflush(stderr);
usleep(500 * 1000);
if ((p = fork()) > 0) {
fprintf(stderr, " --- x11vnc loop: waiting "
"for: %d\n\n", p);
wait(&status);
} else if (p == -1) {
fprintf(stderr, "could not fork\n");
perror("fork");
exit(1);
} else {
execvp(argv[0], argv2);
exit(1);
}
if (loop_max > 0 && i > loop_max) {
fprintf(stderr, "\n --- x11vnc loop: did %d"
" done. ---\n\n", loop_max);
break;
}
fprintf(stderr, "\n --- x11vnc loop: sleeping %d ms "
"---\n\n", loop_sleep);
usleep(loop_sleep * 1000);
}
exit(0);
#else
fprintf(stderr, "fork unavailable, cannot do -loop mode\n");
exit(1);
#endif
}
}
int main(int argc, char* argv[]) {
int i, len, tmpi;
...
...
@@ -32892,6 +32977,9 @@ int main(int argc, char* argv[]) {
/* used to pass args we do not know about to rfbGetScreen(): */
int argc_vnc = 1; char *argv_vnc[128];
/* check for -loop mode: */
check_loop_mode(argc, argv);
dtime0(&x11vnc_start);
if (!getuid() || !geteuid()) {
...
...
@@ -33018,6 +33106,8 @@ int main(int argc, char* argv[]) {
got_connect_once = 1;
} else if (!strcmp(arg, "-many") || !strcmp(arg, "-forever")) {
connect_once = 0;
} else if (strstr(arg, "-loop") == arg) {
; /* handled above */
} else if (!strcmp(arg, "-timeout")) {
CHECK_ARGC
first_conn_timeout = atoi(argv[++i]);
...
...
@@ -33552,6 +33642,24 @@ int main(int argc, char* argv[]) {
}
}
if (getenv("X11VNC_LOOP_MODE")) {
if (bg) {
if (! quiet) {
fprintf(stderr, "disabling -bg in -loop "
"mode\n");
}
bg = 0;
}
if (inetd) {
if (! quiet) {
fprintf(stderr, "disabling -inetd in -loop "
"mode\n");
}
inetd = 0;
}
}
if (launch_gui && (query_cmd || remote_cmd)) {
launch_gui = 0;
gui_str = NULL;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment