summaryrefslogtreecommitdiffstats
path: root/x11vnc/help.c
diff options
context:
space:
mode:
authorrunge <runge>2006-02-05 04:46:57 +0000
committerrunge <runge>2006-02-05 04:46:57 +0000
commitd0ef1285b8fe0f8efd0e1d75fcfcbad175411e0f (patch)
tree70a0c8ca556ac5a3b2420dae98adb3ddf5960969 /x11vnc/help.c
parent1967913e9530139eb355b7b3108bb12314ba47da (diff)
downloadlibtdevnc-d0ef1285b8fe0f8efd0e1d75fcfcbad175411e0f.tar.gz
libtdevnc-d0ef1285b8fe0f8efd0e1d75fcfcbad175411e0f.zip
x11vnc: -8to24 speedups and improvements.
Diffstat (limited to 'x11vnc/help.c')
-rw-r--r--x11vnc/help.c121
1 files changed, 68 insertions, 53 deletions
diff --git a/x11vnc/help.c b/x11vnc/help.c
index 3e1d019..3a558cd 100644
--- a/x11vnc/help.c
+++ b/x11vnc/help.c
@@ -151,55 +151,66 @@ void print_help(int mode) {
"-8to24 [opts] Try this option if -overlay is not supported on your\n"
" OS, and you have a legacy 8bpp app that you want to\n"
" view on a multi-depth display with default depth 24\n"
-" (and is 32 bpp) or have default depth 8 display with\n"
+" (and is 32 bpp) OR have a default depth 8 display with\n"
" depth 24 overlay windows for some apps. This option\n"
-" may not work on all X servers and hardware (tested on\n"
-" XFree86/Xorg mga driver). The \"opts\" string is not\n"
-" required and is described below.\n"
+" may not work on all X servers and hardware (tested\n"
+" on XFree86/Xorg mga driver and Xsun). The \"opts\"\n"
+" string is not required and is described below.\n"
"\n"
" This mode enables a hack where x11vnc monitors windows\n"
" within 3 levels from the root window. If it finds\n"
-" any that are 8bpp it will apply a transformation for\n"
-" pixel data in these regions where it extracts the 8bpp\n"
-" index color value from bits 25-32 and maps them on\n"
-" to TrueColor values and inserts them into bits 1-24\n"
-" (i.e. overwrites bits 1-24). Whereas for default\n"
-" depth 8 displays, everything is tranformed to 32bpp\n"
-" (and is potentially a improvement over -flashcmap).\n"
-"\n"
-" These schemes appear to work, but may still have\n"
-" bugs and note that they do hog resources. If there\n"
-" are multiple 8bpp windows using different colormaps,\n"
-" one may have to iconify all but one for the colors to\n"
-" be correct.\n"
-"\n"
-" There may also be painting errors for clipping and\n"
-" switching between windows of depths 8 and 24.\n"
-" Heuristics are applied to try to minimize the painting\n"
-" errors. One can also press 3 Alt_L's in a row to\n"
-" refresh the screen if the error does not repair itself.\n"
-" Also the option, say, -fixscreen V=3.0 may be use\n"
-" to periodically refresh the screen (at the cost of\n"
-" bandwidth).\n"
+" any that are 8bpp it extracts the indexed color\n"
+" pixel values using XGetImage() and then applies a\n"
+" transformation using the colormap(s) to create TrueColor\n"
+" RGB values that it in turn inserts into bits 1-24 of\n"
+" the framebuffer. This creates a depth 24 \"view\"\n"
+" of the display that is then exported via VNC.\n"
+"\n"
+" Conversely, for default depth 8 displays, the depth\n"
+" 24 regions are read by XGetImage() and everything is\n"
+" transformed and inserted into a depth 24 TrueColor\n"
+" framebuffer.\n"
+"\n"
+" Note that even if there are *no* depth 24 visuals or\n"
+" windows (i.e. pure 8bpp), this mode is potentially\n"
+" a improvement over -flashcmap because it avoids the\n"
+" flashing and shows each window in the correct color.\n"
+"\n"
+" This method appear to work, but may still have bugs\n"
+" and it does hog resources. If there are multiple 8bpp\n"
+" windows using different colormaps, one may have to\n"
+" iconify all but one for the colors to be correct.\n"
+"\n"
+" There may be painting errors for clipping and switching\n"
+" between windows of depths 8 and 24. Heuristics are\n"
+" applied to try to minimize the painting errors.\n"
+" One can also press 3 Alt_L's in a row to refresh the\n"
+" screen if the error does not repair itself. Also the\n"
+" option -fixscreen 8=3.0 or -fixscreen V=3.0 may be\n"
+" use to periodically refresh the screen at the cost of\n"
+" bandwidth (every 3 sec for this example).\n"
"\n"
" The [opts] string can contain the following settings.\n"
" Multiple settings are separated by commas.\n"
"\n"
-" For when there are still color problems, enable an even\n"
-" more experimental mode via the option \"getimage\".\n"
-" This enables a scheme were XGetImage() is used to\n"
-" retrieve the 8bpp data instead of assuming that data\n"
-" is in bits 25-32. This mode is significantly slower\n"
-" than the above mode. For the default depth 8 case,\n"
-" XGetImage() is always used to access depth 24 pixel\n"
-" data.\n"
-"\n"
-" For default depth 8 displays, setting option\n"
-" \"highbits\" may give a speedup for transforming 8bpp\n"
-" pixel data.\n"
+" For for some X servers with default depth 24 a\n"
+" speedup may be achieved via the option \"nogetimage\".\n"
+" This enables a scheme were XGetImage() is not used\n"
+" to retrieve the 8bpp data. Instead, it assumes that\n"
+" the 8bpp data is in bits 25-32 of the 32bit X pixels.\n"
+" There is no reason the X server should put the data\n"
+" there for our poll requests, but some do and so the\n"
+" extra steps to retrieve it can be skipped. Tested with\n"
+" mga driver with XFree86/Xorg. For the default depth\n"
+" 8 case this option is ignored.\n"
+"\n"
+" To adjust how often XGetImage() is used to poll the\n"
+" non-default visual regions for changes, use the option\n"
+" \"poll=t\" where \"t\" is a floating point time.\n"
+" (default: %.2f)\n"
"\n"
" Debugging for this mode can be enabled by setting \n"
-" \"dbg=1\", \"dbg=2\", or \"dbg=3\"\n"
+" \"dbg=1\", \"dbg=2\", or \"dbg=3\".\n"
"\n"
"-scale fraction Scale the framebuffer by factor \"fraction\". Values\n"
" less than 1 shrink the fb, larger ones expand it. Note:\n"
@@ -1202,22 +1213,25 @@ void print_help(int mode) {
" but it can be used for any scenario. This option\n"
" periodically performs costly operations and so\n"
" interactive response may be reduced when it is on.\n"
-" You can use 3 Alt_L's (the Left \"Alt\" key) taps in a\n"
-" row described under -scrollcopyrect instead to manually\n"
-" request a screen repaint when it is needed.\n"
+" You can use 3 Alt_L's (the Left \"Alt\" key) taps in\n"
+" a row (as described under -scrollcopyrect) instead to\n"
+" manually request a screen repaint when it is needed.\n"
"\n"
" \"string\" is a comma separated list of one or more of\n"
-" the following: \"V=t\", \"C=t\", and \"X=t\". In these\n"
-" \"t\" stands for a time in seconds (it is a floating\n"
-" point even though one should usually use values > 2 to\n"
-" avoid wasting resources). V sets how frequently the\n"
-" entire screen should be sent to viewers (it is like the\n"
-" 3 Alt_L's). C sets how long to wait after a CopyRect\n"
-" to repaint the full screen. X sets how frequently\n"
-" to reread the full X11 framebuffer from the X server\n"
-" and push it out to connected viewers. Use of X should\n"
-" be rare, please report a bug if you find you need it.\n"
-" Examples: -fixscreen V=10 -fixscreen C=10\n"
+" the following: \"V=t\", \"C=t\", \"X=t\", and \"8=t\".\n"
+" In these \"t\" stands for a time in seconds (it is\n"
+" a floating point even though one should usually use\n"
+" values > 2 to avoid wasting resources). V sets how\n"
+" frequently the entire screen should be sent to viewers\n"
+" (it is like the 3 Alt_L's). C sets how long to wait\n"
+" after a CopyRect to repaint the full screen. X sets\n"
+" how frequently to reread the full X11 framebuffer from\n"
+" the X server and push it out to connected viewers.\n"
+" Use of X should be rare, please report a bug if you\n"
+" find you need it. 8= applies only for -8to24 mode: it\n"
+" sets how often the non-default visual regions of the\n"
+" screen (e.g. 8bpp windows) are refreshed. Examples:\n"
+" -fixscreen V=10 -fixscreen C=10\n"
"\n"
"-debug_scroll Turn on debugging info printout for the scroll\n"
" heuristics. \"-ds\" is an alias. Specify it multiple\n"
@@ -2062,6 +2076,7 @@ void print_help(int mode) {
exit(1);
}
fprintf(stderr, help, lastmod,
+ POLL_8TO24_DELAY,
scaling_copyrect ? ":cr":":nocr",
view_only ? "on":"off",
shared ? "on":"off",