diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-02-21 01:10:10 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-02-21 01:10:10 +0100 |
commit | a8e4d9a2493426c77eba1b3a33a865eb4b715463 (patch) | |
tree | 333afe9eb0c2040d4fd1f937b0bbca438609ec96 | |
parent | m deps (diff) | |
download | blueshift-4078b34d5d5aaf6f9ed07645f4e80b1a3588ca74.tar.gz blueshift-4078b34d5d5aaf6f9ed07645f4e80b1a3588ca74.tar.bz2 blueshift-4078b34d5d5aaf6f9ed07645f4e80b1a3588ca74.tar.xz |
fix infinite recursion bug on exit after SIGUSR11.2
Signed-off-by: Mattias Andrée <maandree@operamail.com>
-rw-r--r-- | examples/comprehensive | 4 | ||||
-rw-r--r-- | info/blueshift.texinfo | 5 | ||||
-rwxr-xr-x | src/__main__.py | 11 |
3 files changed, 17 insertions, 3 deletions
diff --git a/examples/comprehensive b/examples/comprehensive index aa69f7d..9b9bf36 100644 --- a/examples/comprehensive +++ b/examples/comprehensive @@ -260,6 +260,10 @@ if get_dayness is not None: # Transition on exit in the same way, calculated on exit. old_signal_SIGTERM = signal_SIGTERM + if 'SIGTERM' not in conf_storage: + conf_storage['SIGTERM'] = old_signal_SIGTERM + else: + old_signal_SIGTERM = conf_storage['SIGTERM'] def signal_SIGTERM(signum, frame): global fadeout_time, fadeout_steps fadeout_time = 5 * (1 - get_dayness()) diff --git a/info/blueshift.texinfo b/info/blueshift.texinfo index 239c756..c4f7242 100644 --- a/info/blueshift.texinfo +++ b/info/blueshift.texinfo @@ -530,7 +530,10 @@ the second time a SIGTERM signal has been received. Additionally if the variable @code{panicgate} is @code{True}, there is no fading when the program starts. And @code{conf_opts} is a list of command line -arguments passed onto the configuration script. +arguments passed onto the configuration script; and +@code{conf_storage} is a dictionary can be used to +store information is required to survive a +configuration reload, such as replaced functions. The parameterless function @code{continuous_run}, may replace if you want to do something very special, diff --git a/src/__main__.py b/src/__main__.py index 0d22f77..74c7ebe 100755 --- a/src/__main__.py +++ b/src/__main__.py @@ -31,8 +31,8 @@ PROGRAM_VERSION = '1.2' ## Set global variables global DATADIR, i_size, o_size, r_curve, g_curve, b_curve, clip_result, reset, panicgate global periodically, wait_period, fadein_time, fadeout_time, fadein_steps, fadeout_steps -global monitor_controller, running, continuous_run, panic, _globals_ -global signal_SIGTERM +global monitor_controller, running, continuous_run, panic, _globals_, conf_storage +global signal_SIGTERM, signal_SIGUSR1 from solar import * @@ -131,6 +131,13 @@ conf_opts = None configurations, with the first element being the configuration file ''' +conf_storage = {} +''' +:dict<?, ?> A place for you to store information that is required to survive + a configuration reload +''' + + def reset(): ''' Invoked to reset the displays |