From 88af19cac1901d787bfdf567354a42b21a583095 Mon Sep 17 00:00:00 2001
From: William Kendrick
Date: Sun, 24 Feb 2008 21:35:47 +0000
Subject: [PATCH] Added "--allowscreensaver" option, which prevents Tux Paint
from disabling the screensaver or monitor power management while running.
(Requires SDL 1.2.12; can also be done by setting the
SDL_VIDEO_ALLOW_SCREENSAVER environment variable to '1' before running Tux
Paint.)
---
docs/CHANGES.txt | 7 ++++++-
docs/OPTIONS.txt | 13 ++++++++++++-
docs/html/OPTIONS.html | 13 ++++++++++++-
src/tuxpaint.c | 36 +++++++++++++++++++++++++++++++++---
4 files changed, 63 insertions(+), 6 deletions(-)
diff --git a/docs/CHANGES.txt b/docs/CHANGES.txt
index c014cffa8..1fcfed773 100644
--- a/docs/CHANGES.txt
+++ b/docs/CHANGES.txt
@@ -9,7 +9,7 @@ http://www.tuxpaint.org/
$Id$
-2008.February.22 (0.9.19)
+2008.February.24 (0.9.19)
* New Localizations:
------------------
* Australian English
@@ -75,6 +75,11 @@ $Id$
* System-Related Improvements:
----------------------------
+ * Added "--allowscreensaver" option, which prevents Tux Paint from disabling
+ the screensaver or monitor power management while running.
+ (Requires SDL 1.2.12; can also be done by setting the
+ SDL_VIDEO_ALLOW_SCREENSAVER environment variable to '1' before running Tux Paint.)
+
* Removed unfinished, unused record and playback code.
* Added authorization code to permit Fontconfig files to be installed
diff --git a/docs/OPTIONS.txt b/docs/OPTIONS.txt
index fad302c2f..1bcf5841b 100644
--- a/docs/OPTIONS.txt
+++ b/docs/OPTIONS.txt
@@ -9,7 +9,7 @@
bill@newbreedsoftware.com
http://www.tuxpaint.org/
- February 17, 2008
+ February 24, 2008
--------------------------------------------------------------------------
@@ -105,6 +105,15 @@ Windows Users
screen's current resolution (overriding any "windowsize"
option), as set by the operating system.
+ allowscreensaver=yes
+
+ By default, Tux Paint prevents your system's screensaver from
+ starting up. You can override this by using the
+ "allowscreensaver" option. Note: This requires version 1.2.12 or
+ higher of the SDL library. (You can also do this by setting the
+ "SDL_VIDEO_ALLOW_SCREENSAVER" environment variable on your
+ system to "1".)
+
nosound=yes
Disable sound effects. (Note: Pressing [Alt] + [S] cannot be
used to reenable sounds if they were disabled using this
@@ -671,6 +680,7 @@ Windows Users
--WIDTHxHEIGHT
--orient=portrait
--native
+ --allowscreensaver
--startblank
--nosound
--noquit
@@ -712,6 +722,7 @@ Windows Users
--windowed
--800x600
--orient=landscape
+ --disablescreensaver
--startlast
--sound
--quit
diff --git a/docs/html/OPTIONS.html b/docs/html/OPTIONS.html
index 456557a81..442bb821f 100644
--- a/docs/html/OPTIONS.html
+++ b/docs/html/OPTIONS.html
@@ -23,7 +23,7 @@ New Breed Software
http://www.tuxpaint.org/
-February 17, 2008
+February 24, 2008
@@ -145,6 +145,15 @@ New Breed Software
"windowsize" option), as set by the operating system.
+ allowscreensaver=yes
+
+ By default, Tux Paint prevents your system's screensaver
+ from starting up. You can override this by using the "allowscreensaver"
+ option. Note: This requires version 1.2.12 or higher of the SDL library.
+ (You can also do this by setting the "SDL_VIDEO_ALLOW_SCREENSAVER"
+ environment variable on your system to "1".)
+
+
nosound=yes
Disable sound effects. (Note: Pressing [Alt] + [S]
@@ -1040,6 +1049,7 @@ New Breed Software
--WIDTHxHEIGHT
--orient=portrait
--native
+ --allowscreensaver
--startblank
--nosound
--noquit
@@ -1084,6 +1094,7 @@ New Breed Software
--windowed
--800x600
--orient=landscape
+ --disablescreensaver
--startlast
--sound
--quit
diff --git a/src/tuxpaint.c b/src/tuxpaint.c
index 229e221a8..28a47bd93 100644
--- a/src/tuxpaint.c
+++ b/src/tuxpaint.c
@@ -22,7 +22,7 @@
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(See COPYING.txt)
- June 14, 2002 - February 18, 2008
+ June 14, 2002 - February 24, 2008
$Id$
*/
@@ -842,7 +842,7 @@ static void update_canvas(int x1, int y1, int x2, int y2)
/* Globals: */
-static int fullscreen, native_screensize, disable_quit, simple_shapes,
+static int disable_screensaver, fullscreen, native_screensize, disable_quit, simple_shapes,
disable_print, print_delay, only_uppercase, promptless_save, grab_input,
wheely, keymouse, mouse_x, mouse_y,
mousekey_up, mousekey_down, mousekey_left, mousekey_right,
@@ -4935,6 +4935,7 @@ static void show_usage(FILE * f, char *prg)
"\n"
" %s [--windowed | --fullscreen]\n"
" %s [--WIDTHxHEIGHT | --native]\n"
+ " %s [--disablescreensaver | --allowscreensaver ]\n"
" %s [--orient=landscape | --orient=portrait]\n"
" %s [--startblank | --startlast]\n"
" %s [--sound | --nosound]\n"
@@ -4975,7 +4976,7 @@ static void show_usage(FILE * f, char *prg)
"\n",
prg, prg,
blank, blank, blank, blank,
- blank, blank, blank,
+ blank, blank, blank, blank,
blank, blank, blank,
blank, blank, blank,
blank, blank, blank,
@@ -6075,6 +6076,7 @@ static void setup(int argc, char *argv[])
#else
fullscreen = 0;
#endif
+ disable_screensaver = 0;
native_screensize = 0;
rotate_orientation = 0;
noshortcuts = 0;
@@ -6265,6 +6267,14 @@ static void setup(int argc, char *argv[])
{
fullscreen = 0;
}
+ else if (strcmp(argv[i], "--disablescreensaver") == 0)
+ {
+ disable_screensaver = 1;
+ }
+ else if (strcmp(argv[i], "--allowscreensaver") == 0)
+ {
+ disable_screensaver = 0;
+ }
else if (strcmp(argv[i], "--startblank") == 0 || strcmp(argv[i], "-b") == 0)
{
start_blank = 1;
@@ -6720,6 +6730,17 @@ static void setup(int argc, char *argv[])
putenv((char *) "SDL_VIDEO_X11_WMCLASS=TuxPaint.TuxPaint");
#endif
+ if (disable_screensaver == 0)
+ {
+ putenv((char *) "SDL_VIDEO_ALLOW_SCREENSAVER=1");
+ if (SDL_MAJOR_VERSION < 1 ||
+ (SDL_MAJOR_VERSION >= 1 && SDL_MINOR_VERSION < 2) ||
+ (SDL_MAJOR_VERSION >= 1 && SDL_MINOR_VERSION >= 2 && SDL_PATCHLEVEL < 12))
+ {
+ fprintf(stderr, "Note: 'allowscreensaver' requires SDL 1.2.12 or higher\n");
+ }
+ }
+
/* Test for lockfile, if we're using one: */
if (ok_to_use_lockfile)
@@ -15443,6 +15464,15 @@ static void parse_options(FILE * fi)
fullscreen = 1;
native_screensize = 1;
}
+ else if (strcmp(str, "disablescreensaver=yes") == 0)
+ {
+ disable_screensaver = 1;
+ }
+ else if (strcmp(str, "disablescreensaver=no") == 0 ||
+ strcmp(str, "allowscreensaver=yes") == 0)
+ {
+ disable_screensaver = 0;
+ }
else if (strcmp(str, "native=yes") == 0)
{
native_screensize = 1;