diff options
author | runge <runge> | 2006-02-05 04:46:57 +0000 |
---|---|---|
committer | runge <runge> | 2006-02-05 04:46:57 +0000 |
commit | d0ef1285b8fe0f8efd0e1d75fcfcbad175411e0f (patch) | |
tree | 70a0c8ca556ac5a3b2420dae98adb3ddf5960969 /x11vnc/help.c | |
parent | 1967913e9530139eb355b7b3108bb12314ba47da (diff) | |
download | libtdevnc-d0ef1285b8fe0f8efd0e1d75fcfcbad175411e0f.tar.gz libtdevnc-d0ef1285b8fe0f8efd0e1d75fcfcbad175411e0f.zip |
x11vnc: -8to24 speedups and improvements.
Diffstat (limited to 'x11vnc/help.c')
-rw-r--r-- | x11vnc/help.c | 121 |
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", |