diff options
Diffstat (limited to 'x11vnc/x11vnc.h')
-rw-r--r-- | x11vnc/x11vnc.h | 699 |
1 files changed, 0 insertions, 699 deletions
diff --git a/x11vnc/x11vnc.h b/x11vnc/x11vnc.h deleted file mode 100644 index 015531d..0000000 --- a/x11vnc/x11vnc.h +++ /dev/null @@ -1,699 +0,0 @@ -/* - Copyright (C) 2002-2010 Karl J. Runge <runge@karlrunge.com> - All rights reserved. - -This file is part of x11vnc. - -x11vnc is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or (at -your option) any later version. - -x11vnc is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with x11vnc; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA -or see <http://www.gnu.org/licenses/>. - -In addition, as a special exception, Karl J. Runge -gives permission to link the code of its release of x11vnc with the -OpenSSL project's "OpenSSL" library (or with modified versions of it -that use the same license as the "OpenSSL" library), and distribute -the linked executables. You must obey the GNU General Public License -in all respects for all of the code used other than "OpenSSL". If you -modify this file, you may extend this exception to your version of the -file, but you are not obligated to do so. If you do not wish to do -so, delete this exception statement from your version. -*/ - -#ifndef _X11VNC_X11VNC_H -#define _X11VNC_X11VNC_H - -/* -- x11vnc.h -- */ -/* - * These ' -- filename.[ch] -- ' comments represent a partial cleanup: - * they are an odd way to indicate how this huge file would be split up - * someday into multiple files. - * - * The primary reason we have not broken up this file is for user - * convenience: those wanting to use the latest version download a single - * file, x11vnc.c, and off they go... - */ - -/****************************************************************************/ - -/* Standard includes and libvncserver */ - -#include <unistd.h> -#include <signal.h> -#include <sys/utsname.h> -#ifdef __hpux -/* to avoid select() compiler warning */ -#include <sys/time.h> -#endif -#include <time.h> -#include <errno.h> - -#include <sys/stat.h> -#include <fcntl.h> -#include <ctype.h> - -#include <rfb/rfb.h> -#include <rfb/rfbregion.h> - - -/* we can now build under --without-x: */ -#if LIBVNCSERVER_HAVE_X11 - -#define NO_X11 0 -#include <X11/Xlib.h> -#include <X11/Xutil.h> - -#include <X11/keysym.h> -#include <X11/Xatom.h> - -#else - -#define NO_X11 1 -#ifndef SKIP_NO_X11 -#include "nox11.h" -#endif -#include <rfb/keysym.h> - -#endif - -/****************************************************************************/ - - -/* - * Build-time customization via CPPFLAGS. - * - * Summary of options to include in CPPFLAGS for custom builds: - * - * -DVNCSHARED to have the vnc display shared by default. - * -DFOREVER to have -forever on by default. - * -DNOREPEAT=0 to have -repeat on by default. - * -DXINERAMA=0 to have -noxinerama on by default. - * -DADDKEYSYMS=0 to have -noadd_keysyms the default. - * - * -DREMOTE_DEFAULT=0 to disable remote-control on by default (-yesremote). - * -DREMOTE_CONTROL=0 to disable remote-control mechanism completely. - * -DEXTERNAL_COMMANDS=0 to disable the running of all external commands. - * -DTIGHTFILEXFER=0 disable tightfilexfer. - * - * -DHARDWIRE_PASSWD=... hardwired passwords, quoting necessary. - * -DHARDWIRE_VIEWPASSWD=... - * -DNOPW=1 make -nopw the default (skip warning) - * -DUSEPW=1 make -usepw the default - * -DPASSWD_REQUIRED=1 exit unless a password is supplied. - * -DPASSWD_UNLESS_NOPW=1 exit unless a password is supplied and no -nopw. - * - * -DCURSOR_DRAG=1 to have -cursor_drag as the default. - * -DWIREFRAME=0 to have -nowireframe as the default. - * -DWIREFRAME_COPYRECT=0 to have -nowirecopyrect as the default. - * -DWIREFRAME_PARMS=... set default -wirecopyrect parameters. - * -DSCROLL_COPYRECT=0 to have -noscrollcopyrect as the default. - * -DSCROLL_COPYRECT_PARMS=... set default -scrollcopyrect parameters. - * -DSCALING_COPYRECT=0 - * -DXDAMAGE=0 to have -noxdamage as the default. - * -DSKIPDUPS=0 to have -noskip_dups as the default or vice versa. - * - * -DPOINTER_MODE_DEFAULT={0,1,2,3,4} set default -pointer_mode. - * -DBOLDLY_CLOSE_DISPLAY=0 to not close X DISPLAY under -rawfb. - * -DSMALL_FOOTPRINT=1 for smaller binary size (no help, no gui, etc) - * use 2 or 3 for even smaller footprint. - * -DNOGUI do not include the gui tkx11vnc. - * -DSKIP_HELP=1 smaller. - * -DSKIP_XKB=1 a little smaller. - * -DSKIP_8to24=1 a little smaller. - * -DPOLL_8TO24_DELAY=N - * -DDEBUG_XEVENTS=1 enable printout for X events. - * - * -DX11VNC_MACOSX_USE_GETMAINDEVICE use deprecated GetMainDevice on macosx - * - * -DX11VNC_MACOSX_NO_DEPRECATED_LOCALEVENTS={0,1} - * -DX11VNC_MACOSX_NO_DEPRECATED_POSTEVENTS={0,1} - * -DX11VNC_MACOSX_NO_DEPRECATED_FRAMEBUFFER={0,1} - * - * or for all: - * - * -DX11VNC_MACOSX_NO_DEPRECATED=1 - * - * env. var. of the same names as above can be set to imply true. - * - * Set these in CPPFLAGS before running configure. E.g.: - * - * % env CPPFLAGS="-DFOREVER -DREMOTE_CONTROL=0" ./configure - * % make - */ - -/* - * This can be used to disable the remote control mechanism. - */ -#ifndef REMOTE_CONTROL -#define REMOTE_CONTROL 1 -#endif - -#ifndef XINERAMA -#define XINERAMA 1 -#endif - -#ifndef NOPW -#define NOPW 0 -#endif - -#ifndef USEPW -#define USEPW 0 -#endif - -#ifndef PASSWD_REQUIRED -#define PASSWD_REQUIRED 0 -#endif - -#ifndef PASSWD_UNLESS_NOPW -#define PASSWD_UNLESS_NOPW 0 -#endif - -/* some -D macros for building with old LibVNCServer */ -#ifndef LIBVNCSERVER_HAS_STATS -#define LIBVNCSERVER_HAS_STATS 1 -#endif - -#ifndef LIBVNCSERVER_HAS_SHUTDOWNSOCKETS -#define LIBVNCSERVER_HAS_SHUTDOWNSOCKETS 1 -#endif - -#ifndef LIBVNCSERVER_HAS_TEXTCHAT -#define LIBVNCSERVER_HAS_TEXTCHAT 1 -#endif - -#ifdef PRE_0_8_LIBVNCSERVER -#undef LIBVNCSERVER_WITH_TIGHTVNC_FILETRANSFER -#undef LIBVNCSERVER_HAS_STATS -#undef LIBVNCSERVER_HAS_SHUTDOWNSOCKETS -#undef LIBVNCSERVER_HAS_TEXTCHAT -#define LIBVNCSERVER_HAS_STATS 0 -#define LIBVNCSERVER_HAS_SHUTDOWNSOCKETS 0 -#define LIBVNCSERVER_HAS_TEXTCHAT 0 -#endif - -/* these are for delaying features: */ -#define xxNO_NCACHE - -/* - * Beginning of support for small binary footprint build for embedded - * systems, PDA's etc. It currently just cuts out the low-hanging - * fruit (large text passages). Set to 2, 3 to cut out some of the - * more esoteric extensions. More tedious is to modify LDFLAGS in the - * Makefile to not link against the extension libraries... but that - * should be done too (manually for now). - * - * If there is interest more of the bloat can be removed... Currently - * these shrink the binary from 1100K to about 600K. - */ -#ifndef SMALL_FOOTPRINT -#define SMALL_FOOTPRINT 0 -#endif - -#ifndef SKIP_XKB -#define SKIP_XKB 0 -#endif -#ifndef SKIP_8TO24 -#define SKIP_8TO24 0 -#endif -#ifndef SKIP_HELP -#define SKIP_HELP 0 -#endif - -#if SMALL_FOOTPRINT -#undef NOGUI -#define NOGUI -#undef SKIP_HELP -#define SKIP_HELP 1 -#endif - -#if (SMALL_FOOTPRINT > 1) -#undef SKIP_XKB -#undef SKIP_8TO24 -#undef LIBVNCSERVER_HAVE_LIBXINERAMA -#undef LIBVNCSERVER_HAVE_LIBXFIXES -#undef LIBVNCSERVER_HAVE_LIBXDAMAGE -#define SKIP_XKB 1 -#define SKIP_8TO24 1 -#define LIBVNCSERVER_HAVE_LIBXINERAMA 0 -#define LIBVNCSERVER_HAVE_LIBXFIXES 0 -#define LIBVNCSERVER_HAVE_LIBXDAMAGE 0 -#endif - -#if (SMALL_FOOTPRINT > 2) -#undef LIBVNCSERVER_HAVE_UTMPX_H -#undef LIBVNCSERVER_HAVE_PWD_H -#undef REMOTE_CONTROL -#define LIBVNCSERVER_HAVE_UTMPX_H 0 -#define LIBVNCSERVER_HAVE_PWD_H 0 -#define REMOTE_CONTROL 0 -#endif - -#ifndef X11VNC_MACOSX_NO_DEPRECATED_LOCALEVENTS -#if X11VNC_MACOSX_NO_DEPRECATED -#define X11VNC_MACOSX_NO_DEPRECATED_LOCALEVENTS 1 -#else -#define X11VNC_MACOSX_NO_DEPRECATED_LOCALEVENTS 0 -#endif -#endif - -#ifndef X11VNC_MACOSX_NO_DEPRECATED_POSTEVENTS -#if X11VNC_MACOSX_NO_DEPRECATED -#define X11VNC_MACOSX_NO_DEPRECATED_POSTEVENTS 1 -#else -#define X11VNC_MACOSX_NO_DEPRECATED_POSTEVENTS 0 -#endif -#endif - -#ifndef X11VNC_MACOSX_NO_DEPRECATED_FRAMEBUFFER -#if X11VNC_MACOSX_NO_DEPRECATED -#define X11VNC_MACOSX_NO_DEPRECATED_FRAMEBUFFER 1 -#else -#define X11VNC_MACOSX_NO_DEPRECATED_FRAMEBUFFER 0 -#endif -#endif - -/* - * Not recommended unless you know what you are getting into, but if you - * define the HARDWIRE_PASSWD or HARDWIRE_VIEWPASSWD variables here or in - * CPPFLAGS you can set a default -passwd and -viewpasswd string values, - * perhaps this would be better than nothing on an embedded system, etc. - * These default values will be overridden by the command line. - * We don't even give an example ;-) - */ - -/****************************************************************************/ - -/* Extensions and related includes: */ - -#if LIBVNCSERVER_HAVE_XSHM -# if defined(__hpux) && defined(__ia64) /* something weird on hp/itanic */ -# undef _INCLUDE_HPUX_SOURCE -# endif -#include <sys/ipc.h> -#include <sys/shm.h> -#include <X11/extensions/XShm.h> -#endif -#if LIBVNCSERVER_HAVE_SHMAT -#include <sys/ipc.h> -#include <sys/shm.h> -#endif - -#include <dirent.h> - -#if LIBVNCSERVER_HAVE_XTEST -#include <X11/extensions/XTest.h> -#endif -extern int xtest_base_event_type; - -#if LIBVNCSERVER_HAVE_LIBXTRAP -#define NEED_EVENTS -#define NEED_REPLIES -#include <X11/extensions/xtraplib.h> -#include <X11/extensions/xtraplibp.h> -extern XETC *trap_ctx; -#endif -extern int xtrap_base_event_type; - -#if LIBVNCSERVER_HAVE_RECORD -#include <X11/Xproto.h> -#include <X11/extensions/record.h> -#endif - -#if LIBVNCSERVER_HAVE_XKEYBOARD -#include <X11/XKBlib.h> -#endif - -#if LIBVNCSERVER_HAVE_LIBXINERAMA -#include <X11/extensions/Xinerama.h> -#endif - -#if LIBVNCSERVER_HAVE_SYS_SOCKET_H -#include <sys/socket.h> -#endif - -#include <netdb.h> -#ifndef _AIX -extern int h_errno; -#endif - -#if LIBVNCSERVER_HAVE_NETINET_IN_H -#include <netinet/in.h> -#include <netinet/tcp.h> -#include <arpa/inet.h> -#endif - -#ifndef SOL_IPV6 -#ifdef IPPROTO_IPV6 -#define SOL_IPV6 IPPROTO_IPV6 -#endif -#endif - -#ifndef IPV6_V6ONLY -#ifdef IPV6_BINDV6ONLY -#define IPV6_V6ONLY IPV6_BINDV6ONLY -#endif -#endif - -#ifndef X11VNC_IPV6 -#if defined(AF_INET6) -#define X11VNC_IPV6 1 -#else -#define X11VNC_IPV6 0 -#endif -#endif - -#ifndef X11VNC_LISTEN6 -#define X11VNC_LISTEN6 1 -#endif - -#if !X11VNC_IPV6 -#undef X11VNC_LISTEN6 -#define X11VNC_LISTEN6 0 -#endif - -#if LIBVNCSERVER_HAVE_PWD_H -#include <pwd.h> -#include <grp.h> -#endif -#if LIBVNCSERVER_HAVE_SYS_WAIT_H -#include <sys/wait.h> -#endif -#if LIBVNCSERVER_HAVE_UTMPX_H -#include <utmpx.h> -#endif - -#if LIBVNCSERVER_HAVE_MMAP -#include <sys/mman.h> -#endif - -/* - * overlay/multi-depth screen reading support - * undef SOLARIS_OVERLAY or IRIX_OVERLAY if there are problems building. - */ - -/* solaris/sun */ -#if defined (__SVR4) && defined (__sun) -# define SOLARIS -# ifdef LIBVNCSERVER_HAVE_SOLARIS_XREADSCREEN -# define SOLARIS_OVERLAY -# define OVERLAY_OS -# endif -#endif - -#ifdef SOLARIS_OVERLAY -#include <X11/extensions/transovl.h> -#endif - -/* irix/sgi */ -#if defined(__sgi) -# define IRIX -# ifdef LIBVNCSERVER_HAVE_IRIX_XREADDISPLAY -# define IRIX_OVERLAY -# define OVERLAY_OS -# endif -#endif - -/* - * For reference, the OS header defines: - __SVR4 && __sun is solaris - __sgi - __hpux - __osf__ - __OpenBSD__ - __FreeBSD__ - __NetBSD__ - __linux__ - (defined(__MACH__) && defined(__APPLE__)) - _AIX - */ -#if (defined(__MACH__) && defined(__APPLE__)) -#define MACOSX -#endif - - -#ifdef IRIX_OVERLAY -#include <X11/extensions/readdisplay.h> -#endif - -extern int overlay_present; - -#if LIBVNCSERVER_HAVE_LIBXRANDR -#include <X11/extensions/Xrandr.h> -#endif -extern int xrandr_base_event_type; - -#if LIBVNCSERVER_HAVE_LIBXFIXES -#include <X11/extensions/Xfixes.h> -#endif -extern int xfixes_base_event_type; - -#if LIBVNCSERVER_HAVE_LIBXDAMAGE -#include <X11/extensions/Xdamage.h> -#endif -extern int xdamage_base_event_type; - -#define RAWFB_RET(y) if (raw_fb && ! dpy) return y; -#define RAWFB_RET_VOID if (raw_fb && ! dpy) return; - -extern char lastmod[]; - -/* X display info */ - -extern Display *dpy; /* the single display screen we connect to */ -extern int scr; -extern char *xauth_raw_data; -extern int xauth_raw_len; -extern Window window, rootwin; /* polled window, root window (usu. same) */ -extern Visual *default_visual; /* the default visual (unless -visual) */ -extern int bpp, depth; -extern int indexed_color; -extern int dpy_x, dpy_y; /* size of display */ -extern int fb_x, fb_y, fb_b; /* fb size and bpp guesses at display */ -extern int off_x, off_y; /* offsets for -sid */ -extern int wdpy_x, wdpy_y; /* for actual sizes in case of -clip */ -extern int cdpy_x, cdpy_y, coff_x, coff_y; /* the -clip params */ -extern int button_mask; /* button state and info */ -extern int button_mask_prev; -extern int num_buttons; - -extern long xselectinput_rootwin; - -extern unsigned int display_button_mask; -extern unsigned int display_mod_mask; - -/* image structures */ -extern XImage *scanline; -extern XImage *fullscreen; -extern XImage **tile_row; /* for all possible row runs */ -extern XImage *snaprect; /* for XShmGetImage (fs_factor) */ -extern XImage *snap; /* the full snap fb */ -extern XImage *raw_fb_image; /* the raw fb */ - -#if !LIBVNCSERVER_HAVE_XSHM -/* - * for simplicity, define this struct since we'll never use them - * under using_shm = 0. - */ -typedef struct { - int shmid; char *shmaddr; Bool readOnly; -} XShmSegmentInfo; -#endif - -/* corresponding shm structures */ -extern XShmSegmentInfo scanline_shm; -extern XShmSegmentInfo fullscreen_shm; -extern XShmSegmentInfo *tile_row_shm; /* for all possible row runs */ -extern XShmSegmentInfo snaprect_shm; - -/* rfb screen info */ -extern rfbScreenInfoPtr screen; -extern char *rfb_desktop_name; -extern char *http_dir; -extern char vnc_desktop_name[]; -extern char *main_fb; /* our copy of the X11 fb */ -extern char *rfb_fb; /* same as main_fb unless transformation */ -extern char *fake_fb; /* used under -padgeom */ -extern char *snap_fb; /* used under -snapfb */ -extern char *cmap8to24_fb; /* used under -8to24 */ -extern char *rot_fb; /* used under -rotate */ -extern char *raw_fb; -extern char *raw_fb_addr; -extern int raw_fb_offset; -extern int raw_fb_shm; -extern int raw_fb_mmap; -extern int raw_fb_seek; -extern int raw_fb_fd; -extern int raw_fb_back_to_X; - -extern int raw_fb_native_bpp; -extern int raw_fb_expand_bytes; -extern unsigned long raw_fb_native_red_mask, raw_fb_native_green_mask, raw_fb_native_blue_mask; -extern unsigned short raw_fb_native_red_max, raw_fb_native_green_max, raw_fb_native_blue_max; -extern unsigned short raw_fb_native_red_shift, raw_fb_native_green_shift, raw_fb_native_blue_shift; - -extern int rfb_bytes_per_line; -extern int main_bytes_per_line; -extern int rot_bytes_per_line; -extern unsigned long main_red_mask, main_green_mask, main_blue_mask; -extern unsigned short main_red_max, main_green_max, main_blue_max; -extern unsigned short main_red_shift, main_green_shift, main_blue_shift; - -extern int raw_fb_bytes_per_line; /* of actual raw region we poll, not our raw_fb */ - -/* scaling parameters */ -extern char *scale_str; -extern double scale_fac_x; -extern double scale_fac_y; -extern int scaling; -extern int scaling_blend; /* for no blending option (very course) */ -extern int scaling_nomult4; /* do not require width = n * 4 */ -extern int scaling_pad; /* pad out scaled sizes to fit denominator */ -extern int scaling_interpolate; /* use interpolation scheme when shrinking */ -extern int scaled_x, scaled_y; /* dimensions of scaled display */ -extern int scale_numer, scale_denom; /* n/m */ -extern char *rotating_str; -extern int rotating; -extern int rotating_same; -extern int rotating_cursors; - -/* scale cursor */ -extern char *scale_cursor_str; -extern double scale_cursor_fac_x; -extern double scale_cursor_fac_y; -extern int scaling_cursor; -extern int scaling_cursor_blend; -extern int scaling_cursor_interpolate; -extern int scale_cursor_numer, scale_cursor_denom; - -/* size of the basic tile unit that is polled for changes: */ -extern int tile_x; -extern int tile_y; -extern int ntiles, ntiles_x, ntiles_y; - -/* arrays that indicate changed or checked tiles. */ -extern unsigned char *tile_has_diff, *tile_tried, *tile_copied; -extern unsigned char *tile_has_xdamage_diff, *tile_row_has_xdamage_diff; - -/* times of recent events */ -extern time_t last_event, last_input, last_client, last_open_xdisplay; -extern time_t last_keyboard_input, last_pointer_input; -extern time_t last_local_input; /* macosx */ -extern time_t last_fb_bytes_sent; -extern double last_keyboard_time; -extern double last_pointer_time; -extern double last_pointer_click_time; -extern double last_pointer_motion_time; -extern double last_key_to_button_remap_time; -extern double last_copyrect; -extern double last_copyrect_fix; -extern double last_wireframe; -extern double servertime_diff; -extern double x11vnc_start; -extern double x11vnc_current; -extern double g_now; - -extern double last_get_wm_frame_time; -extern Window last_get_wm_frame; -extern double last_bs_restore; -extern double last_su_restore; -extern double last_bs_save; -extern double last_su_save; - -extern int hack_val; - -/* last client to move pointer */ -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; -extern char *terminal_services_daemon; - -extern int client_count; -extern int clients_served; -extern int client_normal_count; - -/* more transient kludge variables: */ -extern int cursor_x, cursor_y; /* x and y from the viewer(s) */ -extern int button_change_x, button_change_y; -extern int got_user_input; -extern int got_pointer_input; -extern int got_local_pointer_input; -extern int got_pointer_calls; -extern int got_keyboard_input; -extern int got_keyboard_calls; -extern int urgent_update; -extern int last_keyboard_keycode; -extern rfbBool last_rfb_down; -extern rfbBool last_rfb_key_accepted; -extern rfbKeySym last_rfb_keysym; -extern double last_rfb_keytime; -extern double last_rfb_key_injected; -extern double last_rfb_ptr_injected; -extern int fb_copy_in_progress; -extern int drag_in_progress; -extern int shut_down; -extern int do_copy_screen; -extern time_t damage_time; -extern int damage_delay; - -extern int program_pid; -extern char *program_name; -extern char *program_cmdline; - -extern struct utsname UT; - -typedef struct hint { - /* location x, y, height, and width of a change-rectangle */ - /* (grows as adjacent horizontal tiles are glued together) */ - int x, y, w, h; -} hint_t; - -/* struct with client specific data: */ -#define CILEN 10 -typedef struct _ClientData { - int uid; - char *hostname; - char *username; - char *unixname; - int client_port; - int server_port; - char *server_ip; - char input[CILEN]; - int login_viewonly; - time_t login_time; - - pid_t ssl_helper_pid; - - int had_cursor_shape_updates; - int had_cursor_pos_updates; - - double timer; - double send_cmp_rate; - double send_raw_rate; - double latency; - int cmp_bytes_sent; - int raw_bytes_sent; - -} ClientData; - -extern void nox11_exit(int rc); - -#include "params.h" -#include "enums.h" -#include "options.h" -#include "util.h" - -#endif /* _X11VNC_X11VNC_H */ |