http://www.jwz.org/xscreensaver/xscreensaver-5.14.tar.gz
[xscreensaver] / driver / xscreensaver.c
index 70bb95424ef88dcb0fc798afc7fd689bad33a14f..8a4fa2af7c36ca9ebeb5e1a8b270b0a9bd4d14cd 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1991-2008 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1991-2011 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -1227,6 +1227,23 @@ main_loop (saver_info *si)
         for (i = 0; i < si->nscreens; i++)
           spawn_screenhack (&si->screens[i]);
 
+      /* If we are blanking only, optionally power down monitor right now.
+         To do this, we might need to temporarily re-enable DPMS first.
+       */
+      if (p->mode == BLANK_ONLY &&
+          p->dpms_enabled_p && 
+          p->dpms_quickoff_p)
+        {
+          sync_server_dpms_settings (si->dpy, True,
+                                     p->dpms_standby / 1000,
+                                     p->dpms_suspend / 1000,
+                                     (p->dpms_off
+                                      ? (p->dpms_off / 1000)
+                                      : 0xFFFF),
+                                     False);
+          monitor_power_on (si, False);
+        }
+
       /* Don't start the cycle timer in demo mode. */
       if (!si->demoing_p && p->cycle)
        si->cycle_id = XtAppAddTimeOut (si->app,
@@ -1382,6 +1399,15 @@ main (int argc, char **argv)
   struct passwd *spasswd;
   int i;
 
+  /* It turns out that if we do NLS stuff here, people running in Japanese
+     locales get font craziness on the password dialog, presumably because
+     it is displaying Japanese characters in a non-Japanese font.  I don't
+     understand how to automatically make all this crap work properly by
+     default, so until someone sends me a better patch, just leave it off
+     and run the daemon in English.  -- jwz, 29-Sep-2010
+   */
+#undef ENABLE_NLS
+
 #ifdef ENABLE_NLS
   if (!setlocale (LC_ALL, ""))
     fprintf (stderr, "locale not supported by C library\n");