Commit 4088906b authored by runge's avatar runge

rebuild for x11vnc dev 0.9.8

parent ea30be6c
......@@ -2,7 +2,7 @@
Copyright (C) 2002-2009 Karl J. Runge <runge@karlrunge.com>
All rights reserved.
x11vnc README file Date: Sun Mar 15 18:06:19 EDT 2009
x11vnc README file Date: Tue Mar 31 23:24:00 EDT 2009
The following information is taken from these URLs:
......@@ -586,12 +586,12 @@ vncviewer -via $host localhost:0 # must be TightVNC vncviewer.
SourceForge.net. I use libvncserver for all of the VNC aspects; I
couldn't have done without it. The full source code may be found and
downloaded (either file-release tarball or CVS tree) from the above
link. As of Dec 2008, the [91]x11vnc-0.9.6.tar.gz source package is
released (recommended download). The [92]x11vnc 0.9.6 release notes.
link. As of Mar 2009, the [91]x11vnc-0.9.7.tar.gz source package is
released (recommended download). The [92]x11vnc 0.9.7 release notes.
The x11vnc package is the subset of the libvncserver package needed to
build the x11vnc program. Also, you can get a copy of my latest,
bleeding edge [93]x11vnc-0.9.7.tar.gz tarball to build the most up to
bleeding edge [93]x11vnc-0.9.8.tar.gz tarball to build the most up to
date one.
Precompiled Binaries/Packages: See the [94]FAQ below for information
......@@ -629,13 +629,13 @@ vncviewer -via $host localhost:0 # must be TightVNC vncviewer.
them by default.)
If your OS has libjpeg.so and libz.so in standard locations you can
build as follows (example given for the 0.9.6 release of x11vnc:
build as follows (example given for the 0.9.7 release of x11vnc:
replace with the version you downloaded):
(un-tar the x11vnc+libvncserver tarball)
# gzip -dc x11vnc-0.9.6.tar.gz | tar -xvf -
# gzip -dc x11vnc-0.9.7.tar.gz | tar -xvf -
(cd to the source directory)
# cd x11vnc-0.9.6
# cd x11vnc-0.9.7
(run configure and then run make)
# ./configure
......@@ -877,13 +877,13 @@ make
I'd appreciate any additional testing very much.
Thanks to those who suggested features and helped beta test x11vnc
0.9.6 released in Dec 2008!
0.9.7 released in Mar 2009!
Please help test and debug the 0.9.7 version for release sometime in
Spring 2009.
Please help test and debug the 0.9.8 version for release sometime in
Summer 2009.
The version 0.9.7 beta tarball is kept here:
[114]x11vnc-0.9.7.tar.gz
The version 0.9.8 beta tarball is kept here:
[114]x11vnc-0.9.8.tar.gz
There are also some Linux, Solaris, Mac OS X, and other OS test
binaries [115]here. Please kick the tires and report bugs, performance
......@@ -900,7 +900,11 @@ make
Encryption Plugin' settings panel.)
Here are some features that will appear in the 0.9.7 release:
Here are some features that will appear in the 0.9.8 release:
* Coming Soon!
Here are some features that appeared in the 0.9.7 release:
* Support for polling Linux Virtual Terminals (also called virtual
consoles) directly instead of using /dev/fb. The option to use is,
for example, "-rawfb vt2" for Virtual Terminal 2, etc. In this
......@@ -1350,34 +1354,44 @@ LAY
activity changes most of the screen (e.g. moving or iconifying a
large window) there is a delay of 0.5-1 sec while x11vnc reads the
changed regions in.
A slow framebuffer read rate will often be the performance
bottleneck on a fast LAN (whereas on slower links the reduced
network bandwidth becomes the bottleneck.)
Note: A quick way to get a 2X speedup of this for x11vnc is to
switch from depth 24 (32bpp) to depth 16 (16bpp). You get a 4X
speedup going to 8bpp, but the lack of color cells is usually
unacceptable.
switch your X server from depth 24 (32bpp) to depth 16 (16bpp).
You get a 4X speedup going to 8bpp, but the lack of color cells is
usually unacceptable.
To get a sense of the read and write speeds of your video card,
you can run benchmarks like: x11perf -getimage500, x11perf
-putimage500, x11perf -shmput500 and for XFree86 displays with
direct graphics access the dga command (press "b" to run the
you can run benchmarks like: "x11perf -getimage500", "x11perf
-putimage500", "x11perf -shmput500" and for XFree86 displays with
direct graphics access the "dga" command (press "b" to run the
benchmark and then after a few seconds press "q" to quit). Even
this "dd if=/dev/fb0 of=/dev/null" often gives a good estimate. We
have seen a few cases where the hardware fb read speed is greater
than 65 MB/sec: on high end graphics workstations from SGI and
Sun, and also from a Linux user using nvidia proprietary drivers
for his nvidia video card. Update 2008: thankfully, these sped up
drivers are becoming more common on Linux and *BSD systems and
that makes x11vnc run somewhat more quickly.
this "dd if=/dev/fb0 of=/dev/null" often gives a good estimate.
x11vnc also prints out its estimate:
28/02/2009 11:11:07 Autoprobing TCP port
28/02/2009 11:11:07 Autoprobing selected port 5900
28/02/2009 11:11:08 fb read rate: 10 MB/sec
28/02/2009 11:11:08 screen setup finished.
We have seen a few cases where the hardware fb read speed is
greater than 65 MB/sec: on high end graphics workstations from SGI
and Sun, and also from a Linux user using nvidia proprietary
drivers for his nvidia video card. Update 2008: thankfully, these
sped up drivers are becoming more common on Linux and *BSD systems
and that makes x11vnc run somewhat more quickly. Sometimes they
have a read rate of over 400 MB/sec.
On XFree86/Xorg it is actually possible to increase the
framebuffer read speed considerably (10-100 times) by using the
Shadow Framebuffer (a copy of the framebuffer is kept in main
memory and this can be read much more quickly). To do this one
puts the line Option "ShadowFB" "true" in the Device section of
the /etc/X11/XF86Config or /etc/X11/xorg.conf file. Note that this
disables 2D acceleration at the physical display and so likely
defeats the purpose. Nevertheless this could be handy in some
circumstances, e.g. if the slower speed while sitting at the
physical display was acceptable (this seems to be true for most
video cards these days). Unfortunately it does not seem shadowfb
can be turned on and off dynamically...
disables 2D acceleration at the physical display and so that might
be unacceptable if one plays games, etc. on the machine's local
display. Nevertheless this could be handy in some circumstances,
e.g. if the slower speed while sitting at the physical display was
acceptable (this seems to be true for most video cards these
days). Unfortunately it does not seem shadowfb can be turned on
and off dynamically...
Another amusing thing one can do is use Xvfb as the X server, e.g.
"xinit $HOME/.xinitrc -- /usr/X11R6/bin/Xvfb :1 -screen 0
1024x768x16" x11vnc can poll Xvfb efficiently via main memory.
......@@ -1512,9 +1526,9 @@ References
88. http://www.karlrunge.com/x11vnc/faq.html#faq-ssl-tunnel-int
89. http://www.karlrunge.com/x11vnc/ssvnc.html
90. http://sourceforge.net/projects/libvncserver/
91. http://sourceforge.net/project/showfiles.php?group_id=32584&package_id=119006&release_id=646288
92. http://sourceforge.net/project/shownotes.php?release_id=646288&group_id=32584
93. http://x11vnc.sourceforge.net/dev/x11vnc-0.9.7.tar.gz
91. http://sourceforge.net/project/showfiles.php?group_id=32584&package_id=119006&release_id=672184
92. http://sourceforge.net/project/shownotes.php?release_id=672184&group_id=32584
93. http://x11vnc.sourceforge.net/dev/x11vnc-0.9.8.tar.gz
94. http://www.karlrunge.com/x11vnc/faq.html#faq-binaries
95. http://www.tightvnc.com/download.html
96. http://www.realvnc.com/products/free/4.1/download.html
......@@ -1535,7 +1549,7 @@ References
111. http://www.karlrunge.com/x11vnc/faq.html#faq-solaris251build
112. http://www.karlrunge.com/x11vnc/faq.html#faq-macosx
113. http://www.karlrunge.com/x11vnc/faq.html#faq-ssl-tunnel-int
114. http://x11vnc.sourceforge.net/dev/x11vnc-0.9.7.tar.gz
114. http://x11vnc.sourceforge.net/dev/x11vnc-0.9.8.tar.gz
115. http://www.karlrunge.com/x11vnc/bins
116. mailto:xvml@karlrunge.com
117. http://www.karlrunge.com/x11vnc/faq.html#faq-ssl-tunnel-int
......@@ -6344,15 +6358,15 @@ EndSection
6200) x11vnc and [549]SSVNC, both TurboVNC enabled, were able to
sustain 13.5 frames/sec (fps) and 15 Megapixels/sec using the
VirtualGL supplied OpenGL benchmark program glxspheres. VirtualGL on
higher-end hardware can sustain [550]23-30 fps with the glxspheres
higher-end hardware can sustain [550]20-30 fps with the glxspheres
benchmark.
Potential Slowdown: As we describe [551]elsewhere, unless you use
x11vnc with an X server using, say, NVidia proprietary drivers (or a
virtual X server like Xvfb or Xdummy, or in ShadowFB mode), then the
read rate from the graphics card can rather slow (e.g. 10 MB/sec) and
becomes the bottleneck when using x11vnc over fast networks. Note that
all of Xorg's drivers currently (2009) have slow read rates (only
read rate from the graphics card can be rather slow (e.g. 10 MB/sec)
and becomes the bottleneck when using x11vnc over fast networks. Note
that all of Xorg's drivers currently (2009) have slow read rates (only
proprietary drivers appear to have optimized reads.)
So under these (more or less typical) conditions, the speed
......@@ -9678,7 +9692,7 @@ ev
contain very large "case statements" (over 100 cases) that on some
platforms can take a very long time to compile (in extreme cases over
an hour). However on 32bit Linux with intel/amd processor and gcc
these files usually take less then 10 seconds to compile. For 64bit
these files usually take less than 10 seconds to compile. For 64bit
systems using gcc the problem appears to be much worse.
The two files with the large number of cases, remote.c and x11vnc.c,
......@@ -12500,7 +12514,7 @@ x11vnc: a VNC server for real X displays
Here are all of x11vnc command line options:
% x11vnc -opts (see below for -help long descriptions)
x11vnc: allow VNC connections to real X11 displays. 0.9.7 lastmod: 2009-03-15
x11vnc: allow VNC connections to real X11 displays. 0.9.8 lastmod: 2009-03-30
x11vnc options:
-display disp -auth file -N
......@@ -12625,7 +12639,7 @@ libvncserver-tight-extension options:
% x11vnc -help
x11vnc: allow VNC connections to real X11 displays. 0.9.7 lastmod: 2009-03-15
x11vnc: allow VNC connections to real X11 displays. 0.9.8 lastmod: 2009-03-30
(type "x11vnc -opts" to just list the options.)
......
......@@ -91,6 +91,7 @@ int accept_client(rfbClientPtr client);
int run_user_command(char *cmd, rfbClientPtr client, char *mode, char *input,
int len, FILE *output);
int check_access(char *addr);
void client_set_net(rfbClientPtr client);
static rfbClientPtr *client_match(char *str);
static void free_client_data(rfbClientPtr client);
......@@ -138,6 +139,7 @@ char *list_clients(void) {
iter = rfbGetClientIterator(screen);
while( (cl = rfbClientIteratorNext(iter)) ) {
client_set_net(cl);
count++;
}
rfbReleaseClientIterator(iter);
......@@ -156,6 +158,7 @@ char *list_clients(void) {
iter = rfbGetClientIterator(screen);
while( (cl = rfbClientIteratorNext(iter)) ) {
ClientData *cd = (ClientData *) cl->clientData;
if (! cd) {
continue;
}
......@@ -411,6 +414,7 @@ int run_user_command(char *cmd, rfbClientPtr client, char *mode, char *input,
char str[100];
int rc, ok;
ClientData *cd = NULL;
client_set_net(client);
if (client != NULL) {
cd = (ClientData *) client->clientData;
addr = client->host;
......@@ -2897,6 +2901,24 @@ void client_gone_chat_helper(rfbClientPtr client) {
chat_window_client = NULL;
}
void client_set_net(rfbClientPtr client) {
ClientData *cd;
if (client == NULL) {
return;
}
cd = (ClientData *) client->clientData;
if (cd == NULL) {
return;
}
if (cd->client_port < 0) {
double dt = dnow();
cd->client_port = get_remote_port(client->sock);
cd->server_port = get_local_port(client->sock);
cd->server_ip = get_local_host(client->sock);
cd->hostname = ip2host(client->host);
rfbLog("client_set_net: %s %.4f\n", client->host, dnow() - dt);
}
}
/*
* libvncserver callback for when a new client connects
*/
......@@ -2950,10 +2972,8 @@ enum rfbNewClientAction new_client(rfbClientPtr client) {
client->clientData = (void *) calloc(sizeof(ClientData), 1);
cd = (ClientData *) client->clientData;
cd->client_port = get_remote_port(client->sock);
cd->server_port = get_local_port(client->sock);
cd->server_ip = get_local_host(client->sock);
cd->hostname = ip2host(client->host);
/* see client_set_net() we delay the DNS lookups during handshake */
cd->client_port = -1;
cd->username = strdup("");
cd->unixname = strdup("");
......@@ -3026,7 +3046,7 @@ enum rfbNewClientAction new_client(rfbClientPtr client) {
install_padded_fb(pad_geometry);
}
cd->timer = dnow();
cd->timer = last_new_client = dnow();
cd->send_cmp_rate = 0.0;
cd->send_raw_rate = 0.0;
cd->latency = 0.0;
......@@ -3347,6 +3367,7 @@ void check_new_clients(void) {
ClientData *cd = (ClientData *) cl->clientData;
char *s;
client_set_net(cl);
if (! cd) {
continue;
}
......
......@@ -70,5 +70,6 @@ extern int accept_client(rfbClientPtr client);
extern int run_user_command(char *cmd, rfbClientPtr client, char *mode, char *input,
int len, FILE *output);
extern int check_access(char *addr);
extern void client_set_net(rfbClientPtr client);
#endif /* _X11VNC_CONNECTIONS_H */
......@@ -3858,6 +3858,9 @@ void watch_loop(void) {
} else {
rfbPE(-1);
}
if (x11vnc_current < last_new_client + 0.5) {
urgent_update = 1;
}
unixpw_in_rfbPE = 0;
......@@ -3992,6 +3995,9 @@ void watch_loop(void) {
#endif
continue;
}
if (x11vnc_current < last_new_client + 0.5 && !all_clients_initialized()) {
continue;
}
if (button_mask && (!show_dragging || pointer_mode == 0)) {
/*
......
......@@ -2,7 +2,7 @@
.TH X11VNC "1" "March 2009" "x11vnc " "User Commands"
.SH NAME
x11vnc - allow VNC connections to real X11 displays
version: 0.9.7, lastmod: 2009-03-15
version: 0.9.8, lastmod: 2009-03-30
.SH SYNOPSIS
.B x11vnc
[OPTION]...
......
......@@ -550,6 +550,7 @@ extern int hack_val;
extern rfbClientPtr last_pointer_client;
extern rfbClientPtr latest_client;
extern double last_client_gone;
extern double last_new_client;
extern int waited_for_client;
extern int findcreatedisplay;
......
......@@ -47,7 +47,7 @@ int xtrap_base_event_type = 0;
int xdamage_base_event_type = 0;
/* date +'lastmod: %Y-%m-%d' */
char lastmod[] = "0.9.7 lastmod: 2009-03-15";
char lastmod[] = "0.9.8 lastmod: 2009-03-30";
/* X display info */
......@@ -187,6 +187,7 @@ int hack_val = 0;
rfbClientPtr last_pointer_client = NULL;
rfbClientPtr latest_client = NULL;
double last_client_gone = 0.0;
double last_new_client = 0.0;
int waited_for_client = 0;
int findcreatedisplay = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment