summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/state.h
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2009-02-08 23:01:50 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2009-02-08 23:01:50 +0000
commit4000c36207d475d52ea646d9a66dd05e04828cd5 (patch)
tree3fbc7aac3b0cfd06bb0e93bc7703900798e60918 /crawl-ref/source/state.h
parentbd14ba83d0ace9c9f06f3045d4e05b2f0e26f1b0 (diff)
downloadcrawl-ref-4000c36207d475d52ea646d9a66dd05e04828cd5.tar.gz
crawl-ref-4000c36207d475d52ea646d9a66dd05e04828cd5.zip
Fix [2151183]: SIGHUP with the range view annotator active maintained
the annotated colours when saving. Fixed by adding the ability to store arbitrary exit hooks to be executed on (unusual) shutdown; for now they're executed FIFO, but it should probably be LIFO with a stack. Anyway the only thing that uses this now is the range view annotator. Oh, and it only works if you're using libunix.cc. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8999 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/state.h')
-rw-r--r--crawl-ref/source/state.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/crawl-ref/source/state.h b/crawl-ref/source/state.h
index ddfc73b969..397bd510ef 100644
--- a/crawl-ref/source/state.h
+++ b/crawl-ref/source/state.h
@@ -15,6 +15,14 @@
class monsters;
class mon_acting;
+class crawl_exit_hook
+{
+public:
+ crawl_exit_hook();
+ virtual ~crawl_exit_hook();
+ virtual void restore_state() = 0;
+};
+
struct god_act_state
{
public:
@@ -76,6 +84,9 @@ struct game_state
std::vector<std::string> input_line_strs;
unsigned int input_line_curr;
+ // Hooks to call if get shut down unexpectedly.
+ std::vector<crawl_exit_hook*> exit_hooks;
+
bool level_annotation_shown;
protected: