X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=driver%2Fxscreensaver.h;h=646a5179c5afa570161a6f20661f21c235933b7e;hp=3ab14eaaab69e29863c5448c78cd6ed18e1f47cf;hb=ffd8c0873576a9e3065696a624dce6b766b77062;hpb=8eb2873d7054e705c4e83f22d18c40946a9e2529 diff --git a/driver/xscreensaver.h b/driver/xscreensaver.h index 3ab14eaa..646a5179 100644 --- a/driver/xscreensaver.h +++ b/driver/xscreensaver.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1993-2001 Jamie Zawinski +/* xscreensaver, Copyright (c) 1993-2004 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 @@ -20,6 +20,10 @@ #include #include +#ifdef HAVE_SIGACTION +# include /* for sigset_t */ +#endif + #include "prefs.h" extern char *progname; @@ -62,6 +66,7 @@ struct saver_info { server extension info ======================================================================= */ + Bool xinerama_p; /* Whether Xinerama is in use. */ Bool using_xidle_extension; /* which extension is being used. */ Bool using_mit_saver_extension; /* Note that `p->use_*' is the *request*, */ Bool using_sgi_saver_extension; /* and `si->using_*' is the *reality*. */ @@ -75,6 +80,10 @@ struct saver_info { int sgi_saver_ext_event_number; int sgi_saver_ext_error_number; # endif +# ifdef HAVE_RANDR + int randr_event_number; + int randr_error_number; +# endif /* ======================================================================= @@ -148,6 +157,9 @@ struct saver_info { XtIntervalId watchdog_id; /* Timer to implement `prefs.watchdog */ XtIntervalId check_pointer_timer_id; /* `prefs.pointer_timeout' */ + XtIntervalId de_race_id; /* Timer to make sure screen un-blanks */ + int de_race_ticks; + time_t last_activity_time; /* Used only when no server exts. */ time_t last_wall_clock_time; /* Used to detect laptop suspend. */ saver_screen_info *last_activity_screen; @@ -184,8 +196,19 @@ struct saver_info { struct saver_screen_info { saver_info *global; - int number; - Screen *screen; + int number; /* The internal ordinal of this screen, + counting Xinerama rectangles as separate + screens. */ + int real_screen_number; /* The number of the underlying X screen on + which this rectangle lies. */ + Screen *screen; /* The X screen in question. */ + + int x, y, width, height; /* The size and position of this rectangle + on its underlying X screen. */ + + Bool real_screen_p; /* This will be true of exactly one ssi per + X screen. */ + Widget toplevel_shell; /* ======================================================================= @@ -270,7 +293,7 @@ struct saver_screen_info { server extensions and virtual roots ======================================================================= */ -extern void restore_real_vroot (saver_info *si); +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 *); @@ -283,6 +306,9 @@ extern Bool query_sgi_saver_extension (saver_info *); #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 @@ -302,6 +328,7 @@ extern void raise_window (saver_info *si, 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, @@ -359,8 +386,11 @@ 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 @@ -373,7 +403,12 @@ extern void maybe_reload_init_file (saver_info *); subprocs ======================================================================= */ -extern void block_sigchld (void); +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); @@ -386,6 +421,8 @@ 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); +extern void exec_command (const char *shell, const char *command, + int nice_level); /* ======================================================================= subprocs diagnostics @@ -414,8 +451,9 @@ 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; +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;