x11vnc: X DAMAGE support, -clip WxH+X+Y, identd.

pull/1/head
runge 20 years ago
parent 4ff783f579
commit fba6f58a1a

@ -1,3 +1,6 @@
2005-03-12 Karl Runge <runge@karlrunge.com>
* x11vnc: X DAMAGE support, -clip WxH+X+Y, identd.
2005-03-05 Karl Runge <runge@karlrunge.com> 2005-03-05 Karl Runge <runge@karlrunge.com>
* autoconf: rpm -> rpmbuild and echo -n -> printf * autoconf: rpm -> rpmbuild and echo -n -> printf

@ -1,3 +1,14 @@
2005-03-12 Karl Runge <runge@karlrunge.com>
* support for the X DAMAGE extension to receive damage
rectangle reports from the X server. On by default, disable
with -noxdamage. Currently only trusts small rects
(but see -xd_area n) and uses the rest as "hints" for the
scanline polling.
* -clip WxH+X+Y to show a clipped sub-region of the screen.
* use RFC 1413 (identd) to attach a name to a client in
friendly environments.
* fix XAUTHORITY wrt '-auth ... -gui other:0'.
2005-03-04 Karl Runge <runge@karlrunge.com> 2005-03-04 Karl Runge <runge@karlrunge.com>
* add changes to couple with -listen option, in particular * add changes to couple with -listen option, in particular
the behavior of -localhost and remote control cmds. the behavior of -localhost and remote control cmds.

File diff suppressed because it is too large Load Diff

@ -115,6 +115,7 @@ Screen
flashcmap flashcmap
notruecolor notruecolor
-- --
clip:
=P blackout: =P blackout:
xinerama xinerama
-- --
@ -139,12 +140,16 @@ Keyboard
Pointer Pointer
=D-C:none,arrow,X,some,most cursor: =D-C:none,arrow,X,some,most cursor:
noxfixes
noalphablend
-- --
cursorpos cursorpos
=D nocursorshape =D nocursorshape
-- --
noxfixes
noalphablend
alphacut:
alphafrac:
alpharemove
--
buttonmap: buttonmap:
-- --
xwarppointer xwarppointer
@ -220,10 +225,6 @@ Tuning
noshm noshm
flipbyteorder flipbyteorder
onetile onetile
--
alphacut:
alphafrac:
alpharemove
-- D -- D
speeds: speeds:
=D wait: =D wait:
@ -237,6 +238,11 @@ Tuning
fuzz: fuzz:
snapfb snapfb
-- --
xdamage
xd_mem:
xd_area:
xd_width:
--
threads threads
-- --
progressive: progressive:
@ -2042,17 +2048,18 @@ proc client_dialog {client} {
global menu_var text_area cleanup_window item_bool global menu_var text_area cleanup_window item_bool
append_text "\nClient info string: $client\n\n" append_text "\nClient info string: $client\n\n"
if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*)$} \ if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*):(.*)$} \
$client m0 m1 m2 m3 m4 m5 m6]} { $client m0 m1 m2 m3 m4 m5 m6 m7]} {
# id:ip:port:hostname:input:loginvo # id:ip:port:user:hostname:input:loginvo
set cid $m1 set cid $m1
set ip $m2 set ip $m2
set port $m3 set port $m3
set host $m4 set user $m4
set host $m5
regsub {\..*$} $host "" host regsub {\..*$} $host "" host
set input $m5 set input $m6
set logvo $m6 set logvo $m7
append_text "Host: $host, Port: $port, IP: $ip, Id: $cid\n" append_text "Host: $host, Port: $port, User: $user, IP: $ip, Id: $cid\n"
append_text " - originally logged in as: " append_text " - originally logged in as: "
if {$logvo == "1" } { if {$logvo == "1" } {
append_text "View-Only Client\n" append_text "View-Only Client\n"
@ -2184,10 +2191,10 @@ proc update_clients_menu {list} {
$subm add separator $subm add separator
set count 0 set count 0
foreach client [split $list ","] { foreach client [split $list ","] {
if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*)$} \ if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*):(.*)$} \
$client m0 m1 m2 m3 m4 m5 m6]} { $client m0 m1 m2 m3 m4 m5 m6 m7]} {
# id:ip:port:hostname:input:loginvo # id:ip:port:user:hostname:input:loginvo
set host $m4 set host $m5
regsub {\..*$} $host "" host regsub {\..*$} $host "" host
set clabel "$host $m1" set clabel "$host $m1"
} else { } else {

@ -121,6 +121,7 @@
" flashcmap\n" " flashcmap\n"
" notruecolor\n" " notruecolor\n"
" --\n" " --\n"
" clip:\n"
" =P blackout:\n" " =P blackout:\n"
" xinerama\n" " xinerama\n"
" --\n" " --\n"
@ -145,12 +146,16 @@
"\n" "\n"
"Pointer\n" "Pointer\n"
" =D-C:none,arrow,X,some,most cursor:\n" " =D-C:none,arrow,X,some,most cursor:\n"
" noxfixes\n"
" noalphablend\n"
" --\n" " --\n"
" cursorpos\n" " cursorpos\n"
" =D nocursorshape\n" " =D nocursorshape\n"
" --\n" " --\n"
" noxfixes\n"
" noalphablend\n"
" alphacut:\n"
" alphafrac:\n"
" alpharemove\n"
" --\n"
" buttonmap:\n" " buttonmap:\n"
" --\n" " --\n"
" xwarppointer\n" " xwarppointer\n"
@ -226,10 +231,6 @@
" noshm\n" " noshm\n"
" flipbyteorder\n" " flipbyteorder\n"
" onetile\n" " onetile\n"
" --\n"
" alphacut:\n"
" alphafrac:\n"
" alpharemove\n"
" -- D\n" " -- D\n"
" speeds:\n" " speeds:\n"
" =D wait:\n" " =D wait:\n"
@ -243,6 +244,11 @@
" fuzz:\n" " fuzz:\n"
" snapfb\n" " snapfb\n"
" --\n" " --\n"
" xdamage\n"
" xd_mem:\n"
" xd_area:\n"
" xd_width:\n"
" --\n"
" threads\n" " threads\n"
" --\n" " --\n"
" progressive:\n" " progressive:\n"
@ -2048,17 +2054,18 @@
" global menu_var text_area cleanup_window item_bool\n" " global menu_var text_area cleanup_window item_bool\n"
"\n" "\n"
" append_text \"\\nClient info string: $client\\n\\n\"\n" " append_text \"\\nClient info string: $client\\n\\n\"\n"
" if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*)$} \\\n" " if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*):(.*)$} \\\n"
" $client m0 m1 m2 m3 m4 m5 m6]} {\n" " $client m0 m1 m2 m3 m4 m5 m6 m7]} {\n"
" # id:ip:port:hostname:input:loginvo\n" " # id:ip:port:user:hostname:input:loginvo\n"
" set cid $m1\n" " set cid $m1\n"
" set ip $m2\n" " set ip $m2\n"
" set port $m3\n" " set port $m3\n"
" set host $m4\n" " set user $m4\n"
" set host $m5\n"
" regsub {\\..*$} $host \"\" host\n" " regsub {\\..*$} $host \"\" host\n"
" set input $m5\n" " set input $m6\n"
" set logvo $m6\n" " set logvo $m7\n"
" append_text \"Host: $host, Port: $port, IP: $ip, Id: $cid\\n\"\n" " append_text \"Host: $host, Port: $port, User: $user, IP: $ip, Id: $cid\\n\"\n"
" append_text \" - originally logged in as: \"\n" " append_text \" - originally logged in as: \"\n"
" if {$logvo == \"1\" } {\n" " if {$logvo == \"1\" } {\n"
" append_text \"View-Only Client\\n\"\n" " append_text \"View-Only Client\\n\"\n"
@ -2190,10 +2197,10 @@
" $subm add separator\n" " $subm add separator\n"
" set count 0\n" " set count 0\n"
" foreach client [split $list \",\"] {\n" " foreach client [split $list \",\"] {\n"
" if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*)$} \\\n" " if {[regexp {^(.*):(.*):(.*):(.*):(.*):(.*):(.*)$} \\\n"
" $client m0 m1 m2 m3 m4 m5 m6]} {\n" " $client m0 m1 m2 m3 m4 m5 m6 m7]} {\n"
" # id:ip:port:hostname:input:loginvo\n" " # id:ip:port:user:hostname:input:loginvo\n"
" set host $m4\n" " set host $m5\n"
" regsub {\\..*$} $host \"\" host\n" " regsub {\\..*$} $host \"\" host\n"
" set clabel \"$host $m1\"\n" " set clabel \"$host $m1\"\n"
" } else {\n" " } else {\n"

@ -2,7 +2,7 @@
.TH X11VNC "1" "March 2005" "x11vnc " "User Commands" .TH X11VNC "1" "March 2005" "x11vnc " "User Commands"
.SH NAME .SH NAME
x11vnc - allow VNC connections to real X11 displays x11vnc - allow VNC connections to real X11 displays
version: 0.7.2pre, lastmod: 2005-03-04 version: 0.7.2pre, lastmod: 2005-03-12
.SH SYNOPSIS .SH SYNOPSIS
.B x11vnc .B x11vnc
[OPTION]... [OPTION]...
@ -89,6 +89,15 @@ shifts a root view to it: this shows SaveUnders menus,
etc, although they will be clipped if they extend beyond etc, although they will be clipped if they extend beyond
the window. the window.
.PP .PP
\fB-clip\fR \fIWxH+X+Y\fR
.IP
Only show the sub-region of the full display that
corresponds to the rectangle with size WxH and offset
+X+Y. The VNC display has size WxH (i.e. smaller than
the full display). This also works for \fB-id/-sid\fR mode
where the offset is relative to the upper left corner
of the selected window.
.PP
\fB-flashcmap\fR \fB-flashcmap\fR
.IP .IP
In 8bpp indexed color, let the installed colormap flash In 8bpp indexed color, let the installed colormap flash
@ -994,6 +1003,43 @@ Time in seconds after NO activity (e.g. screen blank)
to really throttle down the screen polls (i.e. sleep to really throttle down the screen polls (i.e. sleep
for about 1.5 secs). Use 0 to disable. Default: 60 for about 1.5 secs). Use 0 to disable. Default: 60
.PP .PP
\fB-noxdamage\fR
.IP
Do not use the X DAMAGE extension to detect framebuffer
changes even if it is available.
.IP
x11vnc's use of the DAMAGE extension: 1) significantly
reduces the load when the screen is not changing much,
and 2) detects changed areas (small ones by default)
more quickly.
.IP
Currently the DAMAGE extension is overly conservative
and often reports large areas (e.g. a whole terminal
or browser window) as damaged even though the actual
changed region is much smaller (sometimes just a few
pixels). So heuristics were introduced to skip large
areas and use the damage rectangles only as "hints"
for the traditional scanline polling. The following
tuning parameters are introduced to adjust this
behavior:
.PP
\fB-xd_area\fR \fIA\fR
.IP
Set the largest DAMAGE rectangle area \fIA\fR (in
pixels: width * height) to trust as truly damaged:
the rectangle will be copied from the framebuffer
(slow) no matter what. Set to zero to trust *all*
rectangles. Default: 20000
.PP
\fB-xd_mem\fR \fIf\fR
.IP
Set how long DAMAGE rectangles should be "remembered",
\fIf\fR is a floating point number and is in units of the
scanline repeat cycle time (32 iterations). The default
(1.0) should give no painting problems. Increase it if
there are problems or decrease it to live on the edge
(perhaps useful on a slow machine).
.PP
\fB-sigpipe\fR \fIstring\fR \fB-sigpipe\fR \fIstring\fR
.IP .IP
Broken pipe (SIGPIPE) handling. \fIstring\fR can be Broken pipe (SIGPIPE) handling. \fIstring\fR can be
@ -1149,6 +1195,8 @@ id:windowid set \fB-id\fR window to "windowid". empty
.IP .IP
sid:windowid set \fB-sid\fR window to "windowid" sid:windowid set \fB-sid\fR window to "windowid"
.IP .IP
clip:WxH+X+Y set \fB-clip\fR mode to "WxH+X+Y"
.IP
flashcmap enable \fB-flashcmap\fR mode. flashcmap enable \fB-flashcmap\fR mode.
.IP .IP
noflashcmap disable \fB-flashcmap\fR mode. noflashcmap disable \fB-flashcmap\fR mode.
@ -1387,6 +1435,14 @@ nonap disable \fB-nap\fR mode.
.IP .IP
sb:n set \fB-sb\fR to n s, same as screen_blank:n sb:n set \fB-sb\fR to n s, same as screen_blank:n
.IP .IP
xdamage enable xdamage polling hints.
.IP
noxdamage disable xdamage polling hints.
.IP
xd_area:A set \fB-xd_area\fR max pixel area to "A"
.IP
xd_mem:f set \fB-xd_mem\fR remembrance to "f"
.IP
fs:frac set \fB-fs\fR fraction to "frac", e.g. 0.5 fs:frac set \fB-fs\fR fraction to "frac", e.g. 0.5
.IP .IP
gaps:n set \fB-gaps\fR to n. gaps:n set \fB-gaps\fR to n.
@ -1491,7 +1547,7 @@ the returned value corresponds to (hint: the ext_*
variables correspond to the presence of X extensions): variables correspond to the presence of X extensions):
.IP .IP
ans= stop quit exit shutdown ping blacken zero ans= stop quit exit shutdown ping blacken zero
refresh reset close disconnect id sid waitmapped refresh reset close disconnect id sid clip waitmapped
nowaitmapped flashcmap noflashcmap truecolor notruecolor nowaitmapped flashcmap noflashcmap truecolor notruecolor
overlay nooverlay overlay_cursor overlay_yescursor overlay nooverlay overlay_cursor overlay_yescursor
nooverlay_nocursor nooverlay_cursor nooverlay_yescursor nooverlay_nocursor nooverlay_cursor nooverlay_yescursor
@ -1507,9 +1563,10 @@ clear_mods noclear_mods clear_keys noclear_keys
remap repeat norepeat fb nofb bell nobell sel remap repeat norepeat fb nofb bell nobell sel
nosel primary noprimary cursorshape nocursorshape nosel primary noprimary cursorshape nocursorshape
cursorpos nocursorpos cursor show_cursor noshow_cursor cursorpos nocursorpos cursor show_cursor noshow_cursor
nocursor xfixes noxfixes alphacut alphafrac alpharemove nocursor xfixes noxfixes xdamage noxdamage xd_area
noalpharemove alphablend noalphablend xwarp xwarppointer xd_mem alphacut alphafrac alpharemove noalpharemove
noxwarp noxwarppointer buttonmap dragging nodragging alphablend noalphablend xwarp xwarppointer noxwarp
noxwarppointer buttonmap dragging nodragging
pointer_mode pm input_skip input client_input speeds pointer_mode pm input_skip input client_input speeds
debug_pointer dp nodebug_pointer nodp debug_keyboard dk debug_pointer dp nodebug_pointer nodp debug_keyboard dk
nodebug_keyboard nodk deferupdate defer wait rfbwait nodebug_keyboard nodk deferupdate defer wait rfbwait
@ -1520,15 +1577,16 @@ noalwaysshared nevershared noalwaysshared dontdisconnect
nodontdisconnect desktop noremote nodontdisconnect desktop noremote
.IP .IP
aro= display vncdisplay desktopname http_url auth aro= display vncdisplay desktopname http_url auth
users rootshift scale_str scaled_x scaled_y scale_numer users rootshift clipshift scale_str scaled_x scaled_y
scale_denom scale_fac scaling_noblend scaling_nomult4 scale_numer scale_denom scale_fac scaling_noblend
scaling_pad scaling_interpolate inetd safer unsafe scaling_nomult4 scaling_pad scaling_interpolate inetd
passwdfile using_shm logfile o rc norc h help V version safer unsafe passwdfile using_shm logfile o rc norc
lastmod bg sigpipe threads clients client_count pid h help V version lastmod bg sigpipe threads clients
ext_xtest ext_xkb ext_xshm ext_xinerama ext_overlay client_count pid ext_xtest ext_xkb ext_xshm ext_xinerama
ext_xfixes ext_xdamage ext_xrandr rootwin num_buttons ext_overlay ext_xfixes ext_xdamage ext_xrandr rootwin
button_mask mouse_x mouse_y bpp depth indexed_color num_buttons button_mask mouse_x mouse_y bpp depth
dpy_x dpy_y rfbauth passwd indexed_color dpy_x dpy_y wdpy_x wdpy_y off_x off_y
cdpy_x cdpy_y coff_x coff_y rfbauth passwd
.PP .PP
\fB-sync\fR \fB-sync\fR
.IP .IP

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save