-/* xscreensaver, Copyright (c) 1991-1995 Jamie Zawinski <jwz@netscape.com>
+/* xscreensaver, Copyright (c) 1991-1996 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
#include <X11/extensions/xidle.h>
#endif /* HAVE_XIDLE_EXTENSION */
-#ifdef HAVE_SAVER_EXTENSION
+#ifdef HAVE_MIT_SAVER_EXTENSION
#include <X11/extensions/scrnsaver.h>
-extern int saver_ext_event_number;
-extern Window server_saver_window;
-#endif /* HAVE_SAVER_EXTENSION */
+extern int mit_saver_ext_event_number;
+extern Window server_mit_saver_window;
+#endif /* HAVE_MIT_SAVER_EXTENSION */
+
+#ifdef HAVE_SGI_SAVER_EXTENSION
+#include <X11/extensions/XScreenSaver.h>
+extern int sgi_saver_ext_event_number;
+#endif /* HAVE_SGI_SAVER_EXTENSION */
#include "xscreensaver.h"
Time notice_events_timeout;
extern Bool use_xidle_extension;
-extern Bool use_saver_extension;
+extern Bool use_mit_saver_extension;
+extern Bool use_sgi_saver_extension;
extern Bool dbox_up_p;
extern Bool locked_p;
extern Window screensaver_window;
kill_screenhack ();
spawn_screenhack (False);
}
- cycle_id = XtAppAddTimeOut (app, how_long, cycle_timer, 0);
+ cycle_id = XtAppAddTimeOut (app, how_long,
+ (XtTimerCallbackProc) cycle_timer, 0);
#ifdef DEBUG_TIMERS
if (verbose_p)
static void
reset_timers P((void))
{
- if (use_saver_extension)
+ if (use_mit_saver_extension || use_sgi_saver_extension)
return;
#ifdef DEBUG_TIMERS
progname, timeout, timer_id);
#endif
XtRemoveTimeOut (timer_id);
- timer_id = XtAppAddTimeOut (app, timeout, idle_timer, 0);
+ timer_id = XtAppAddTimeOut (app, timeout,
+ (XtTimerCallbackProc) idle_timer, 0);
if (cycle_id) abort ();
#ifdef DEBUG_TIMERS
unsigned int mask;
XtIntervalId *timerP = (XtIntervalId *) closure;
- if (use_xidle_extension || use_saver_extension)
+ if (use_xidle_extension ||
+ use_mit_saver_extension ||
+ use_sgi_saver_extension)
abort ();
- *timerP = XtAppAddTimeOut (app, pointer_timeout, check_pointer_timer,
+ *timerP = XtAppAddTimeOut (app, pointer_timeout,
+ (XtTimerCallbackProc) check_pointer_timer,
closure);
XQueryPointer (dpy, screensaver_window, &root, &child,
if (until_idle_p)
{
- if (!use_saver_extension)
+ if (!use_mit_saver_extension && !use_sgi_saver_extension)
{
/* Wake up periodically to ask the server if we are idle. */
- timer_id = XtAppAddTimeOut (app, timeout, idle_timer, 0);
+ timer_id = XtAppAddTimeOut (app, timeout,
+ (XtTimerCallbackProc) idle_timer, 0);
#ifdef DEBUG_TIMERS
if (verbose_p)
printf ("%s: starting idle_timer (%ld, %ld)\n",
#endif
}
- if (!use_xidle_extension && !use_saver_extension)
+ if (!use_xidle_extension &&
+ !use_mit_saver_extension &&
+ !use_sgi_saver_extension)
/* start polling the mouse position */
check_pointer_timer (&check_pointer_timer_id, 0);
}
}
else
#endif /* HAVE_XIDLE_EXTENSION */
-#ifdef HAVE_SAVER_EXTENSION
- if (use_saver_extension)
+#ifdef HAVE_MIT_SAVER_EXTENSION
+ if (use_mit_saver_extension)
{
/* We don't need to do anything in this case - the synthetic
event isn't necessary, as we get sent specific events
idle = 0;
}
else
-#endif /* HAVE_SAVER_EXTENSION */
+#endif /* HAVE_MIT_SAVER_EXTENSION */
+#ifdef HAVE_SGI_SAVER_EXTENSION
+ if (use_sgi_saver_extension)
+ {
+ /* We don't need to do anything in this case - the synthetic
+ event isn't necessary, as we get sent specific events
+ to wake us up. */
+ idle = 0;
+ }
+ else
+#endif /* HAVE_SGI_SAVER_EXTENSION */
{
idle = 1000 * (last_activity_time - time ((time_t *) 0));
}
if (idle >= timeout)
goto DONE;
- else if (!use_saver_extension)
+ else if (!use_mit_saver_extension && !use_sgi_saver_extension)
{
timer_id = XtAppAddTimeOut (app, timeout - idle,
- idle_timer, 0);
+ (XtTimerCallbackProc) idle_timer,
+ 0);
#ifdef DEBUG_TIMERS
if (verbose_p)
printf ("%s: starting idle_timer (%ld, %ld)\n",
break;
case CreateNotify:
- if (!use_xidle_extension && !use_saver_extension)
+ if (!use_xidle_extension &&
+ !use_mit_saver_extension &&
+ !use_sgi_saver_extension)
{
- XtAppAddTimeOut (app, notice_events_timeout, notice_events_timer,
+ XtAppAddTimeOut (app, notice_events_timeout,
+ (XtTimerCallbackProc) notice_events_timer,
(XtPointer) event.xcreatewindow.window);
#ifdef DEBUG_TIMERS
if (verbose_p)
default:
-#ifdef HAVE_SAVER_EXTENSION
- if (event.type == saver_ext_event_number)
+#ifdef HAVE_MIT_SAVER_EXTENSION
+ if (event.type == mit_saver_ext_event_number)
{
XScreenSaverNotifyEvent *sevent =
(XScreenSaverNotifyEvent *) &event;
/* Get the "real" server window out of the way as soon
as possible. */
- if (server_saver_window &&
- window_exists_p (dpy, server_saver_window))
- XUnmapWindow (dpy, server_saver_window);
+ if (server_mit_saver_window &&
+ window_exists_p (dpy, server_mit_saver_window))
+ XUnmapWindow (dpy, server_mit_saver_window);
if (sevent->kind != ScreenSaverExternal)
{
}
# ifdef DEBUG_TIMERS
else if (verbose_p)
- printf ("%s: unknown ScreenSaver event received at %s\n",
+ printf ("%s: unknown MIT-SCREEN-SAVER event received at %s\n",
progname, timestring ());
# endif /* DEBUG_TIMERS */
}
else
-#endif /* HAVE_SAVER_EXTENSION */
+#endif /* HAVE_MIT_SAVER_EXTENSION */
+
+
+#ifdef HAVE_SGI_SAVER_EXTENSION
+ if (event.type == (sgi_saver_ext_event_number + ScreenSaverStart))
+ {
+# ifdef DEBUG_TIMERS
+ if (verbose_p)
+ printf ("%s: ScreenSaverStart event received at %s\n",
+ progname, timestring ());
+# endif /* DEBUG_TIMERS */
+
+ if (until_idle_p)
+ goto DONE;
+ }
+ else if (event.type == (sgi_saver_ext_event_number + ScreenSaverEnd))
+ {
+# ifdef DEBUG_TIMERS
+ if (verbose_p)
+ printf ("%s: ScreenSaverEnd event received at %s\n",
+ progname, timestring ());
+# endif /* DEBUG_TIMERS */
+ if (!until_idle_p)
+ goto DONE;
+ }
+ else
+#endif /* HAVE_SGI_SAVER_EXTENSION */
XtDispatchEvent (&event);
}