Commit ad02e155 authored by runge's avatar runge

x11vnc: -grab_buster for XGrabServer deadlock; fix scrolls and copyrect for -clip and -id

parent 8fcf0861
2005-07-09 Karl Runge <runge@karlrunge.com>
* x11vnc: -grab_buster for breaking XGrabServer deadlock, fix
scrolls and copyrect for -clip and -id cases.
2005-07-06 Karl Runge <runge@karlrunge.com>
* x11vnc: -gui tray now embeds in systray; more improvements to gui.
......
2005-07-09 Karl Runge <runge@karlrunge.com>
* add -grab_buster helper thread to break up grabs (might not be
need any longer due to gett XFlush-ing). Fix scrolls and
copyrect for -clip and -id cases.
2005-07-06 Karl Runge <runge@karlrunge.com>
* many improvements to the gui. now embeds into system tray ok.
x11vnc -debug_grabs, -printgui, -nosync
......
x11vnc README file Date: Wed Jul 6 22:35:15 EDT 2005
x11vnc README file Date: Sat Jul 9 00:07:21 EDT 2005
The following information is taken from these URLs:
......@@ -577,10 +577,10 @@ make
I don't have any formal beta-testers for the releases of x11vnc, so
I'd appreciate any additional testing very much!
I'd like to release version 0.7.2 in Jun/Jul/2005 sometime, here is
I'd like to release version 0.7.2 in Jun-Jul/2005 sometime, here is
the current tarball:
RC-6 lastmod: 2005-07-07 [51]x11vnc-0.7.2beta.tar.gz
RC-6 lastmod: 2005-07-08 [51]x11vnc-0.7.2beta.tar.gz
There are also some Linux, Solaris, and other OS test binaries
[52]here. Please kick the tires and report bugs, performance
......@@ -4548,7 +4548,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.7.2 lastmod: 2005-07-06
x11vnc: allow VNC connections to real X11 displays. 0.7.2 lastmod: 2005-07-09
x11vnc options:
-display disp -auth file
......@@ -4602,7 +4602,8 @@ x11vnc options:
-scr_keys list -scr_term list
-scr_keyrepeat lo-hi -scr_parms string
-fixscreen string -debug_scroll
-noxrecord -debug_grabs
-noxrecord -grab_buster
-nograb_buster -debug_grabs
-pointer_mode n -input_skip n
-speeds rd,bw,lat -wmdt string
-debug_pointer -debug_keyboard
......@@ -4648,7 +4649,7 @@ libvncserver options:
% x11vnc -help
x11vnc: allow VNC connections to real X11 displays. 0.7.2 lastmod: 2005-07-06
x11vnc: allow VNC connections to real X11 displays. 0.7.2 lastmod: 2005-07-09
Typical usage is:
......@@ -5730,6 +5731,21 @@ Options:
currently used by the -scrollcopyrect scheme and to
monitor X server grabs.
-grab_buster Some of the use of the RECORD extension can leave a
-nograb_buster tiny window for XGrabServer deadlock. This is only if
the whole-server grabbing application expects mouse
or keyboard input before releasing the grab. It is
usually a window manager that does this. x11vnc takes
care to avoid the the problem, but if caught x11vnc
will freeze. Without -grab_buster, the only solution
is to go the physical display and give it some input
to satisfy the grabbing app. Or manually kill and
restart the window manager. With -grab_buster, x11vnc
will fork a helper thread and if x11vnc appears to be
stuck in a grab after a period of time (20-30 sec)
then it will inject some user input: button clicks,
Escape, mouse motion, etc to try to break the grab.
-debug_grabs Turn on debugging info printout with respect to
XGrabServer() deadlock for -scrollcopyrect mode.
......
......@@ -403,7 +403,7 @@ After selecting a VNC client from the \"Clients -> current\" menu,
you will be presented with a dialog that shows the information
about the VNC client.
You can chose to disconnect the client by clicking on the
You can choose to disconnect the client by clicking on the
\"Disconnect\" checkbox and pressing \"OK\". There will be a
confirmation dialog to doublecheck.
......@@ -500,8 +500,8 @@ to apply the changes, or press \"Cancel\" to skip applying them.
remote-control commands.
- \"Ask for Confirmation\" toggles whether a popup menu will be presented
at the X display when a new VNC viewer attempts to connects. The person
sitting at the X display can chose to accept or reject the connection
at the X display when a new VNC viewer attempts to connect. The person
sitting at the X display can choose to accept or reject the connection
or accept the connection in View-Only mode. It corresponds to the
\"-R accept:popup\" and \"-R accept:\" remote-control commands.
......@@ -540,7 +540,7 @@ the ViewOnly log in aspect: \"Password\" is still required to log in.
set helptext(Misc-Tuning:) "
x11vnc has what seems like hundreds of tuning parameters. In this
sub-menu we place some lesser used ones. Mostly likely you'll want to
sub-menu we place some lesser used ones. Most likely you'll want to
leave them at their default values, but you can try them out quickly
with the gui to see if they improve things.
"
......@@ -625,7 +625,7 @@ A brief Background on pixels, color, and visuals:
mappings and so provide less variation in kinds of colors.
A visual's \"depth\" is how many of the pixels are used in the
actual recipe. This may sound wasteful (i.t. not using some of the
actual recipe. This may sound wasteful (i.e. not using some of the
bits), but for 32bpp (4 billion colors) that is too much and nearly
always only 24 for them are used. The most common Visual seems to
be depth 24 TrueColor at 32bpp. This provides 16 million colors
......@@ -645,7 +645,7 @@ a speedup is achieved because writing graphics data to, say, the 8bit
visual does not destroy the image data in the 24bit visual. Evidently
popup menus can be done very quickly this way: they use the 8bit visual
and when the popup goes away the graphics data in the 24bit visual is
immediately reexposed without having the application redrawing it.
immediately reexposed without having the application redraw it.
Also, some legacy applications can only use 8bpp visuals. But in these
days of high color graphics and web browsers one would like the rest
......@@ -681,7 +681,7 @@ is shared.
Note if the application pops up multiple windows they are not tracked
and shared. So this is not application sharing. The application has to
be very simple (e.g. a simple terminal or the image window on a webcam)
for this mode to be useable.
for this mode to be usable.
"
set helptext(ResizeRotate:) "
This sub-menu has some options regarding screens that support the X
......@@ -722,7 +722,7 @@ the screen are still slow today).
This sub-menu has some options for the x11vnc Scroll detection and
CopyRect speedup scheme.
For this mode, x11vnc \"spies\" on communication be the X server and
For this mode, x11vnc \"spies\" on communication between the X server and
applications using the RECORD extension. It looks for various patterns
to detect a scrolled window. This only works for some applications,
fortunately some important ones.
......@@ -2037,9 +2037,11 @@ proc update_menu_vars {{query ""}} {
}
foreach piece $query_result_list {
#puts stderr "UMV: $piece"
if {[regexp {^([^:][^:]*):(.*)$} $piece m0 item val]} {
if {[info exists menu_var($item)]} {
set old $menu_var($item)
#puts stderr " $old"
if {$val == "N/A"} {
continue
}
......@@ -2885,6 +2887,11 @@ proc make_menu_items {} {
global bfont ffont beginner_mode simple_gui_created
global helptext helpremote helplabel
# some tweaks...
if {![info exists menu_var(deny)]} {
set menu_var(deny) 0
}
set case "";
set L_casc ""
set L_casc_count 0
......@@ -3234,7 +3241,14 @@ proc do_props {{msg ""}} {
global have_labelframes ffont bfont
global props_buttons icon_noadvanced
if ![info exists props_accept] {
if [info exists menu_var(deny)] {
if {$menu_var(deny) == $unset_str || $menu_var(deny) == 0} {
set props_accept 1
} else {
set props_accept 0
}
} else {
set menu_var(deny) 0
set props_accept 1
}
set prop0_accept $props_accept
......@@ -3729,15 +3743,18 @@ proc make_icon {} {
global tray_embed tray_running env
global x11vnc_client_file client_tail client_str saved_clients_str
global client_balloon_id
global bfont sfont ffont
global bfont sfont snfont ffont
global icon_minimal gui_start_mode
global window_view_posted menu_var x11vnc_gui_geom
set min_x 24
set min_y 24
set font $bfont
set mfont $font
if {$tray_embed} {
set font $sfont
set mfont $snfont
}
if {[info exists env(X11VNC_ICON_FONT)]} {
set font $env(X11VNC_ICON_FONT)
......@@ -3768,15 +3785,16 @@ proc make_icon {} {
label $l -text $lab -borderwidth $bw -font $font
icon_win_cfg 0
set window_view_posted 0
pack $l -fill both -expand 1
set menu "$l.menu"
menu $menu -tearoff 0 -postcommand {set window_view_posted 0}
$menu add command -font $font -label "Properties" -command do_props
$menu add command -font $font -label "Help" -command "menu_help Tray"
$menu add command -font $mfont -label "Properties" -command do_props
$menu add command -font $mfont -label "Help" -command "menu_help Tray"
$menu add separator
$menu add command -font $font -label "New Client" -command do_new_client
$menu add command -font $font -label "Disconnect All" -command do_disconnect_all
$menu add command -font $mfont -label "New Client" -command do_new_client
$menu add command -font $mfont -label "Disconnect All" -command do_disconnect_all
$menu add separator
set wv "$menu.casc1"
......@@ -3789,9 +3807,9 @@ proc make_icon {} {
-command "do_var WindowView" \
-variable menu_var(WindowView)
}
$menu add cascade -font $font -label "Window View" -menu $wv
$menu add cascade -font $mfont -label "Window View" -menu $wv
$menu add command -font $font -label "Stop x11vnc" -command clean_icon_exit
$menu add command -font $mfont -label "Stop x11vnc" -command clean_icon_exit
bind $icon_win <ButtonPress-1> "pmenu $menu %X %Y"
bind $icon_win <ButtonPress-3> "pmenu $menu %X %Y"
......@@ -4698,7 +4716,7 @@ global helpall helptext helpremote helplabel hostname osname
global all_settings reply_xdisplay always_update
global max_text_height max_text_width
global menu_var unset_str menus_disabled
global bfont ffont old_labels have_labelframes
global bfont ffont sfont snfont old_labels have_labelframes
global connected_to_x11vnc
global delay_sleep extra_sleep extra_sleep_split
global cache_all_query_vars
......
......@@ -409,7 +409,7 @@
"you will be presented with a dialog that shows the information\n"
"about the VNC client.\n"
"\n"
"You can chose to disconnect the client by clicking on the \n"
"You can choose to disconnect the client by clicking on the \n"
"\\\"Disconnect\\\" checkbox and pressing \\\"OK\\\". There will be a\n"
"confirmation dialog to doublecheck.\n"
"\n"
......@@ -506,8 +506,8 @@
" remote-control commands.\n"
" \n"
" - \\\"Ask for Confirmation\\\" toggles whether a popup menu will be presented\n"
" at the X display when a new VNC viewer attempts to connects. The person\n"
" sitting at the X display can chose to accept or reject the connection\n"
" at the X display when a new VNC viewer attempts to connect. The person\n"
" sitting at the X display can choose to accept or reject the connection\n"
" or accept the connection in View-Only mode. It corresponds to the \n"
" \\\"-R accept:popup\\\" and \\\"-R accept:\\\" remote-control commands.\n"
" \n"
......@@ -546,7 +546,7 @@
"\n"
" set helptext(Misc-Tuning:) \"\n"
"x11vnc has what seems like hundreds of tuning parameters. In this\n"
"sub-menu we place some lesser used ones. Mostly likely you'll want to\n"
"sub-menu we place some lesser used ones. Most likely you'll want to\n"
"leave them at their default values, but you can try them out quickly\n"
"with the gui to see if they improve things.\n"
"\"\n"
......@@ -631,7 +631,7 @@
" mappings and so provide less variation in kinds of colors.\n"
"\n"
" A visual's \\\"depth\\\" is how many of the pixels are used in the\n"
" actual recipe. This may sound wasteful (i.t. not using some of the\n"
" actual recipe. This may sound wasteful (i.e. not using some of the\n"
" bits), but for 32bpp (4 billion colors) that is too much and nearly\n"
" always only 24 for them are used. The most common Visual seems to\n"
" be depth 24 TrueColor at 32bpp. This provides 16 million colors\n"
......@@ -651,7 +651,7 @@
"visual does not destroy the image data in the 24bit visual. Evidently\n"
"popup menus can be done very quickly this way: they use the 8bit visual\n"
"and when the popup goes away the graphics data in the 24bit visual is\n"
"immediately reexposed without having the application redrawing it.\n"
"immediately reexposed without having the application redraw it.\n"
"\n"
"Also, some legacy applications can only use 8bpp visuals. But in these\n"
"days of high color graphics and web browsers one would like the rest\n"
......@@ -687,7 +687,7 @@
"Note if the application pops up multiple windows they are not tracked\n"
"and shared. So this is not application sharing. The application has to\n"
"be very simple (e.g. a simple terminal or the image window on a webcam)\n"
"for this mode to be useable.\n"
"for this mode to be usable.\n"
"\"\n"
" set helptext(ResizeRotate:) \"\n"
"This sub-menu has some options regarding screens that support the X\n"
......@@ -728,7 +728,7 @@
"This sub-menu has some options for the x11vnc Scroll detection and\n"
"CopyRect speedup scheme.\n"
"\n"
"For this mode, x11vnc \\\"spies\\\" on communication be the X server and\n"
"For this mode, x11vnc \\\"spies\\\" on communication between the X server and\n"
"applications using the RECORD extension. It looks for various patterns\n"
"to detect a scrolled window. This only works for some applications,\n"
"fortunately some important ones.\n"
......@@ -2043,9 +2043,11 @@
" }\n"
"\n"
" foreach piece $query_result_list {\n"
"#puts stderr \"UMV: $piece\"\n"
" if {[regexp {^([^:][^:]*):(.*)$} $piece m0 item val]} {\n"
" if {[info exists menu_var($item)]} {\n"
" set old $menu_var($item)\n"
"#puts stderr \" $old\"\n"
" if {$val == \"N/A\"} {\n"
" continue\n"
" }\n"
......@@ -2891,6 +2893,11 @@
" global bfont ffont beginner_mode simple_gui_created\n"
" global helptext helpremote helplabel\n"
"\n"
" # some tweaks...\n"
" if {![info exists menu_var(deny)]} {\n"
" set menu_var(deny) 0\n"
" }\n"
"\n"
" set case \"\";\n"
" set L_casc \"\"\n"
" set L_casc_count 0\n"
......@@ -3240,7 +3247,14 @@
" global have_labelframes ffont bfont\n"
" global props_buttons icon_noadvanced\n"
"\n"
" if ![info exists props_accept] {\n"
" if [info exists menu_var(deny)] {\n"
" if {$menu_var(deny) == $unset_str || $menu_var(deny) == 0} {\n"
" set props_accept 1\n"
" } else {\n"
" set props_accept 0\n"
" }\n"
" } else {\n"
" set menu_var(deny) 0\n"
" set props_accept 1\n"
" }\n"
" set prop0_accept $props_accept\n"
......@@ -3735,15 +3749,18 @@
" global tray_embed tray_running env\n"
" global x11vnc_client_file client_tail client_str saved_clients_str\n"
" global client_balloon_id\n"
" global bfont sfont ffont\n"
" global bfont sfont snfont ffont\n"
" global icon_minimal gui_start_mode\n"
" global window_view_posted menu_var x11vnc_gui_geom\n"
" set min_x 24\n"
" set min_y 24\n"
" \n"
" set font $bfont\n"
" set mfont $font\n"
"\n"
" if {$tray_embed} {\n"
" set font $sfont\n"
" set mfont $snfont\n"
" }\n"
" if {[info exists env(X11VNC_ICON_FONT)]} {\n"
" set font $env(X11VNC_ICON_FONT)\n"
......@@ -3774,15 +3791,16 @@
" label $l -text $lab -borderwidth $bw -font $font\n"
" icon_win_cfg 0\n"
"\n"
"\n"
" set window_view_posted 0\n"
" pack $l -fill both -expand 1\n"
" set menu \"$l.menu\"\n"
" menu $menu -tearoff 0 -postcommand {set window_view_posted 0}\n"
" $menu add command -font $font -label \"Properties\" -command do_props\n"
" $menu add command -font $font -label \"Help\" -command \"menu_help Tray\"\n"
" $menu add command -font $mfont -label \"Properties\" -command do_props\n"
" $menu add command -font $mfont -label \"Help\" -command \"menu_help Tray\"\n"
" $menu add separator\n"
" $menu add command -font $font -label \"New Client\" -command do_new_client\n"
" $menu add command -font $font -label \"Disconnect All\" -command do_disconnect_all\n"
" $menu add command -font $mfont -label \"New Client\" -command do_new_client\n"
" $menu add command -font $mfont -label \"Disconnect All\" -command do_disconnect_all\n"
" $menu add separator\n"
"\n"
" set wv \"$menu.casc1\"\n"
......@@ -3795,9 +3813,9 @@
" -command \"do_var WindowView\" \\\n"
" -variable menu_var(WindowView)\n"
" }\n"
" $menu add cascade -font $font -label \"Window View\" -menu $wv\n"
" $menu add cascade -font $mfont -label \"Window View\" -menu $wv\n"
"\n"
" $menu add command -font $font -label \"Stop x11vnc\" -command clean_icon_exit\n"
" $menu add command -font $mfont -label \"Stop x11vnc\" -command clean_icon_exit\n"
"\n"
" bind $icon_win <ButtonPress-1> \"pmenu $menu %X %Y\"\n"
" bind $icon_win <ButtonPress-3> \"pmenu $menu %X %Y\"\n"
......@@ -4704,7 +4722,7 @@
"global all_settings reply_xdisplay always_update\n"
"global max_text_height max_text_width\n"
"global menu_var unset_str menus_disabled\n"
"global bfont ffont old_labels have_labelframes\n"
"global bfont ffont sfont snfont old_labels have_labelframes\n"
"global connected_to_x11vnc\n"
"global delay_sleep extra_sleep extra_sleep_split\n"
"global cache_all_query_vars\n"
......
......@@ -2,7 +2,7 @@
.TH X11VNC "1" "July 2005" "x11vnc " "User Commands"
.SH NAME
x11vnc - allow VNC connections to real X11 displays
version: 0.7.2, lastmod: 2005-07-06
version: 0.7.2, lastmod: 2005-07-09
.SH SYNOPSIS
.B x11vnc
[OPTION]...
......@@ -1378,6 +1378,23 @@ Disable any use of the RECORD extension. This is
currently used by the \fB-scrollcopyrect\fR scheme and to
monitor X server grabs.
.PP
\fB-grab_buster,\fR \fB-nograb_buster\fR
.IP
Some of the use of the RECORD extension can leave a
tiny window for XGrabServer deadlock. This is only if
the whole-server grabbing application expects mouse
or keyboard input before releasing the grab. It is
usually a window manager that does this. x11vnc takes
care to avoid the the problem, but if caught x11vnc
will freeze. Without \fB-grab_buster,\fR the only solution
is to go the physical display and give it some input
to satisfy the grabbing app. Or manually kill and
restart the window manager. With \fB-grab_buster,\fR x11vnc
will fork a helper thread and if x11vnc appears to be
stuck in a grab after a period of time (20-30 sec)
then it will inject some user input: button clicks,
Escape, mouse motion, etc to try to break the grab.
.PP
\fB-debug_grabs\fR
.IP
Turn on debugging info printout with respect to
......
This diff is collapsed.
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