X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=driver%2Fxscreensaver.h;h=5490e8eaa0ce3aac38c2178a036c0e0f082e5978;hp=9b933347b79773ebf6961fb6cc86268262f1a511;hb=c494fd2e6b3b25582375d62e40f4f5cc984ca424;hpb=b08b6f995f8d5e0ff37d2f627bff3f61dcb75ac5 diff --git a/driver/xscreensaver.h b/driver/xscreensaver.h index 9b933347..5490e8ea 100644 --- a/driver/xscreensaver.h +++ b/driver/xscreensaver.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1993-1996 Jamie Zawinski +/* xscreensaver, Copyright (c) 1993-2006 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -9,62 +9,197 @@ * implied warranty. */ -#if __STDC__ -# include +#ifndef __XSCREENSAVER_H__ +#define __XSCREENSAVER_H__ + +#include +#ifdef HAVE_UNISTD_H # include #endif +#include #include -#if __STDC__ -# define P(x)x -#else -# define P(x)() -# ifndef const -# define const /**/ -# endif -#endif - -#ifdef NO_MOTIF -# define NO_DEMO_MODE - - /* #### If anyone ever finishes the Athena locking code, remove this. - Until then, Locking requires Motif. */ -# ifndef NO_LOCKING -# define NO_LOCKING -# endif - +#ifdef HAVE_SIGACTION +# include /* for sigset_t */ #endif -extern char *progname, *progclass; -extern char *screensaver_version; - -extern Display *dpy; -extern Screen *screen; -extern Visual *visual; -extern int visual_depth; +#include "prefs.h" -extern Bool verbose_p; +extern char *progname; +extern char *progclass; -extern FILE *real_stderr; -extern FILE *real_stdout; +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) -extern void initialize_screensaver_window P((void)); -extern void raise_window P((Bool inhibit_fade, Bool between_hacks_p)); -extern void blank_screen P((void)); -extern void unblank_screen P((void)); -extern void restart_process P((void)); + -extern void restore_real_vroot P((void)); +/* ======================================================================= + server extensions and virtual roots + ======================================================================= */ -extern void spawn_screenhack P((Bool)); -extern void kill_screenhack P((void)); +extern Bool restore_real_vroot (saver_info *si); +extern void disable_builtin_screensaver (saver_info *, Bool unblank_screen_p); +extern Bool ensure_no_screensaver_running (Display *, Screen *); -extern Colormap copy_colormap P((Display *, Colormap, Colormap)); -extern void fade_colormap P((Display*,Colormap,Colormap,int,int,Bool,Bool)); -extern void blacken_colormap P((Display *, Colormap)); +#ifdef HAVE_MIT_SAVER_EXTENSION +extern Bool query_mit_saver_extension (saver_info *); +#endif +#ifdef HAVE_SGI_SAVER_EXTENSION +extern Bool query_sgi_saver_extension (saver_info *); +#endif +#ifdef HAVE_XIDLE_EXTENSION +extern Bool query_xidle_extension (saver_info *); +#endif +#ifdef HAVE_RANDR +extern Bool query_randr_extension (saver_info *); +#endif +#ifdef HAVE_PROC_INTERRUPTS +extern Bool query_proc_interrupts_available (saver_info *, const char **why); +#endif -extern int BadWindow_ehandler P((Display *dpy, XErrorEvent *error)); +/* Display Power Management System (DPMS) interface. */ +extern Bool monitor_powered_on_p (saver_info *si); +extern void monitor_power_on (saver_info *si); + + +/* ======================================================================= + blanking + ======================================================================= */ + +extern void initialize_screensaver_window (saver_info *si); +extern void raise_window (saver_info *si, + Bool inhibit_fade, Bool between_hacks_p, + Bool dont_clear); +extern Bool blank_screen (saver_info *si); +extern void unblank_screen (saver_info *si); +extern void resize_screensaver_window (saver_info *si); + +extern void get_screen_viewport (saver_screen_info *ssi, + int *x_ret, int *y_ret, + int *w_ret, int *h_ret, + int target_x, int target_y, + Bool verbose_p); + + +/* ======================================================================= + locking + ======================================================================= */ + +#ifndef NO_LOCKING +extern Bool unlock_p (saver_info *si); +extern Bool lock_priv_init (int argc, char **argv, Bool verbose_p); +extern Bool lock_init (int argc, char **argv, Bool verbose_p); +extern Bool passwd_valid_p (const char *typed_passwd, Bool verbose_p); +#endif /* NO_LOCKING */ + +extern void set_locked_p (saver_info *si, Bool locked_p); +extern int move_mouse_grab (saver_info *si, Window to, Cursor cursor, + int to_screen_no); +extern int mouse_screen (saver_info *si); + + +/* ======================================================================= + runtime privileges + ======================================================================= */ + +extern void hack_uid (saver_info *si); +extern void describe_uids (saver_info *si, FILE *out); + +/* ======================================================================= + demoing + ======================================================================= */ + +extern void draw_shaded_rectangle (Display *dpy, Window window, + int x, int y, + int width, int height, + int thickness, + unsigned long top_color, + unsigned long bottom_color); +extern int string_width (XFontStruct *font, char *s); + +extern void make_splash_dialog (saver_info *si); +extern void handle_splash_event (saver_info *si, XEvent *e); + + +/* ======================================================================= + timers + ======================================================================= */ + +extern void start_notice_events_timer (saver_info *, Window, Bool verbose_p); +extern void cycle_timer (XtPointer si, XtIntervalId *id); +extern void activate_lock_timer (XtPointer si, XtIntervalId *id); +extern void reset_watchdog_timer (saver_info *si, Bool on_p); +extern void idle_timer (XtPointer si, XtIntervalId *id); +extern void de_race_timer (XtPointer si, XtIntervalId *id); +extern void sleep_until_idle (saver_info *si, Bool until_idle_p); +extern void reset_timers (saver_info *si); +extern void schedule_wakeup_event (saver_info *si, Time when, Bool verbose_p); + + +/* ======================================================================= + remote control + ======================================================================= */ + +extern Bool handle_clientmessage (saver_info *, XEvent *, Bool); +extern void maybe_reload_init_file (saver_info *); + +/* ======================================================================= + subprocs + ======================================================================= */ + +extern void handle_signals (saver_info *si); +#ifdef HAVE_SIGACTION + extern sigset_t block_sigchld (void); +#else /* !HAVE_SIGACTION */ + extern int block_sigchld (void); +#endif /* !HAVE_SIGACTION */ +extern void unblock_sigchld (void); +extern void hack_environment (saver_info *si); +extern void hack_subproc_environment (saver_screen_info *ssi); +extern void init_sigchld (void); +extern void spawn_screenhack (saver_info *si, Bool first_time_p); +extern pid_t fork_and_exec (saver_screen_info *ssi, const char *command); +extern void kill_screenhack (saver_info *si); +extern void suspend_screenhack (saver_info *si, Bool suspend_p); +extern Bool screenhack_running_p (saver_info *si); +extern void emergency_kill_subproc (saver_info *si); +extern Bool select_visual (saver_screen_info *ssi, const char *visual_name); +extern void store_saver_status (saver_info *si); +extern const char *signal_name (int signal); + +/* ======================================================================= + subprocs diagnostics + ======================================================================= */ -extern char *timestring P((void)); -extern Bool window_exists_p P((Display *dpy, Window window)); +extern FILE *real_stderr; +extern FILE *real_stdout; +extern void initialize_stderr (saver_info *si); +extern void reset_stderr (saver_screen_info *ssi); +extern void clear_stderr (saver_screen_info *ssi); +extern void shutdown_stderr (saver_info *si); + + +/* ======================================================================= + misc + ======================================================================= */ + +extern const char *blurb (void); +extern void save_argv (int argc, char **argv); +extern void saver_exit (saver_info *si, int status, const char *core_reason); +extern void restart_process (saver_info *si); + +extern int saver_ehandler (Display *dpy, XErrorEvent *error); +extern int BadWindow_ehandler (Display *dpy, XErrorEvent *error); +extern Bool window_exists_p (Display *dpy, Window window); +extern char *timestring (void); +extern Bool display_is_on_console_p (saver_info *si); +extern Visual *get_best_gl_visual (saver_screen_info *ssi); +extern void check_for_leaks (const char *where); + +extern Atom XA_VROOT, XA_XSETROOT_ID, XA_ESETROOT_PMAP_ID, XA_XROOTPMAP_ID; +extern Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_ID; +extern Atom XA_SCREENSAVER_STATUS, XA_LOCK, XA_BLANK; +extern Atom XA_DEMO, XA_PREFS; + +#endif /* __XSCREENSAVER_H__ */