http://ftp.x.org/contrib/applications/xscreensaver-2.24.tar.gz
[xscreensaver] / driver / xscreensaver.h
index 6dba82a64bf5fa951d655efbf95150bf216c698b..db2f87841352ebb914628f8760c945a81a8cddd0 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1993-1997 Jamie Zawinski <jwz@netscape.com>
+/* xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <jwz@netscape.com>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -37,10 +37,11 @@ typedef struct saver_screen_info saver_screen_info;
    command line, the resource database, or entered through a dialog box.
  */
 struct saver_preferences {
-  Bool verbose_p;
-  Bool lock_p;                 /* whether to lock as well as save */
+  Bool verbose_p;              /* whether to print out lots of status info */
+  Bool timestamp_p;            /* whether to mark messages with a timestamp */
+  Bool debug_p;                        /* pay no mind to the man behind the curtain */
 
-  Bool debug_p;
+  Bool lock_p;                 /* whether to lock as well as save */
   Bool fade_p;                 /* whether to fade to black */
   Bool unfade_p;               /* whether to fade from black */
   int fade_seconds;            /* how long that should take */
@@ -112,6 +113,8 @@ struct saver_info {
      ======================================================================= */
 
   Bool screen_blanked_p;       /* Whether the saver is currently active. */
+  Window mouse_grab_window;    /* Window holding our mouse grab */
+  Window keyboard_grab_window; /* Window holding our keyboard grab */
 
 
   /* =======================================================================
@@ -124,7 +127,6 @@ struct saver_info {
   Bool dbox_up_p;              /* Whether the demo-mode or passwd dialogs
                                   are currently visible */
 
-
   /* =======================================================================
      demoing
      ======================================================================= */
@@ -134,6 +136,15 @@ struct saver_info {
                                   dialog box, which should be run next. */
 
 
+  /* =======================================================================
+     asking questions
+     ======================================================================= */
+
+  Bool question_up_p;          /* Whether the question dialog is currently
+                                  visible. */
+  Widget question_dialog;      /* The question dialog, if any. */
+
+
   /* =======================================================================
      timers
      ======================================================================= */
@@ -185,6 +196,9 @@ struct saver_screen_info {
                                   destroy and recreate it on different
                                   visuals. */
   Colormap cmap;               /* The colormap that goes with the window. */
+  Bool install_cmap_p;         /* whether we should use our own colormap.
+                                  This can be overridden on a per-hack basis.
+                                */
   Visual *current_visual;      /* The visual of the window. */
   Visual *default_visual;      /* visual to use when none other specified */
   int current_depth;           /* How deep the visual (and the window) are. */
@@ -245,7 +259,7 @@ struct saver_screen_info {
 
 extern void restore_real_vroot (saver_info *si);
 extern void disable_builtin_screensaver (saver_info *si, Bool turn_off_p);
-extern void ensure_no_screensaver_running (Display *, Screen *);
+extern Bool ensure_no_screensaver_running (Display *, Screen *);
 
 #ifdef HAVE_MIT_SAVER_EXTENSION
 extern Bool query_mit_saver_extension (saver_info *);
@@ -254,6 +268,10 @@ extern Bool query_mit_saver_extension (saver_info *);
 extern Bool query_sgi_saver_extension (saver_info *);
 #endif
 
+/* Display Power Management System (DPMS) interface. */
+extern Bool monitor_powered_on_p (saver_info *si);
+extern void monitor_power_on (saver_info *si);
+
 
 /* =======================================================================
    blanking
@@ -265,8 +283,8 @@ extern void raise_window (saver_info *si,
                            Bool dont_clear);
 extern void blank_screen (saver_info *si);
 extern void unblank_screen (saver_info *si);
-extern void grab_keyboard_and_mouse (Display *, Window, Cursor);
-extern void ungrab_keyboard_and_mouse (Display *dpy);
+extern void grab_keyboard_and_mouse (saver_info *si, Window, Cursor);
+extern void ungrab_keyboard_and_mouse (saver_info *si);
 
 /* =======================================================================
    locking
@@ -296,6 +314,11 @@ extern void format_into_label (Widget label, const char *arg);
 extern void steal_focus_and_colormap (Widget dialog);
 #endif
 
+#ifdef HAVE_MOTIF
+extern void disable_motif_drag_and_drop(Widget w);
+#endif
+
+
 /* =======================================================================
    timers
    ======================================================================= */
@@ -317,6 +340,7 @@ extern Bool handle_clientmessage (saver_info *, XEvent *, Bool);
    subprocs
    ======================================================================= */
 
+extern void hack_environment (saver_info *si);
 extern void init_sigchld (void);
 extern void spawn_screenhack (saver_info *si, Bool first_time_p);
 extern void kill_screenhack (saver_info *si);
@@ -352,6 +376,7 @@ extern void clear_stderr (saver_screen_info *ssi);
    misc
    ======================================================================= */
 
+extern const char *blurb (void);
 extern void save_argv (int argc, char **argv);
 extern void saver_exit (saver_info *si, int status);
 extern void restart_process (saver_info *si);
@@ -362,7 +387,7 @@ extern Bool window_exists_p (Display *dpy, Window window);
 extern char *timestring (void);
 
 extern Atom XA_VROOT, XA_XSETROOT_ID;
-extern Atom XA_SCREENSAVER_VERSION, XA_SCREENSAVER_ID;
+extern Atom XA_SCREENSAVER, XA_SCREENSAVER_VERSION, XA_SCREENSAVER_ID;
 extern Atom XA_SCREENSAVER_TIME;
 
 #endif /* __XSCREENSAVER_H__ */