diff options
author | Pavel Labath <pavelo@centrum.sk> | 2011-08-09 08:25:28 (GMT) |
---|---|---|
committer | Paul Tagliamonte <paultag@fluxbox.org> | 2012-04-07 02:13:13 (GMT) |
commit | 657eb02f063fe6d046cefaecc5982b0b5ae35bf6 (patch) | |
tree | f4cd50787576f8130ac2069e4462f85d5aa82df5 /src | |
parent | bc41a7240a53f0c5e0a1a5715ab703689280a0e2 (diff) | |
download | fluxbox_paul-657eb02f063fe6d046cefaecc5982b0b5ae35bf6.zip fluxbox_paul-657eb02f063fe6d046cefaecc5982b0b5ae35bf6.tar.bz2 |
Make AutoReloadHelper truly "automatic"
by adding the ability to automatically check for modifications at specified intervals.
Using inotify() would be better, but that's not always present.
Diffstat (limited to 'src')
-rw-r--r-- | src/FbTk/AutoReloadHelper.cc | 8 | ||||
-rw-r--r-- | src/FbTk/AutoReloadHelper.hh | 8 | ||||
-rw-r--r-- | src/Keys.cc | 2 |
3 files changed, 16 insertions, 2 deletions
diff --git a/src/FbTk/AutoReloadHelper.cc b/src/FbTk/AutoReloadHelper.cc index 17124d4..a9f2f5c 100644 --- a/src/FbTk/AutoReloadHelper.cc +++ b/src/FbTk/AutoReloadHelper.cc | |||
@@ -22,10 +22,18 @@ | |||
22 | #include "AutoReloadHelper.hh" | 22 | #include "AutoReloadHelper.hh" |
23 | 23 | ||
24 | #include "FileUtil.hh" | 24 | #include "FileUtil.hh" |
25 | #include "MemFun.hh" | ||
25 | #include "StringUtil.hh" | 26 | #include "StringUtil.hh" |
26 | 27 | ||
27 | namespace FbTk { | 28 | namespace FbTk { |
28 | 29 | ||
30 | AutoReloadHelper::AutoReloadHelper(int interval) { | ||
31 | m_timer.setFunctor(MemFun(*this, &AutoReloadHelper::checkReload)); | ||
32 | m_timer.setInterval(interval); | ||
33 | if(interval > 0) | ||
34 | m_timer.start(); | ||
35 | } | ||
36 | |||
29 | void AutoReloadHelper::checkReload() { | 37 | void AutoReloadHelper::checkReload() { |
30 | if (!m_reload_cmd.get()) | 38 | if (!m_reload_cmd.get()) |
31 | return; | 39 | return; |
diff --git a/src/FbTk/AutoReloadHelper.hh b/src/FbTk/AutoReloadHelper.hh index b337a4a..216b3f5 100644 --- a/src/FbTk/AutoReloadHelper.hh +++ b/src/FbTk/AutoReloadHelper.hh | |||
@@ -28,11 +28,16 @@ | |||
28 | 28 | ||
29 | #include "Command.hh" | 29 | #include "Command.hh" |
30 | #include "RefCount.hh" | 30 | #include "RefCount.hh" |
31 | #include "Timer.hh" | ||
31 | 32 | ||
32 | namespace FbTk { | 33 | namespace FbTk { |
33 | 34 | ||
34 | class AutoReloadHelper { | 35 | class AutoReloadHelper: private NotCopyable { |
35 | public: | 36 | public: |
37 | /** | ||
38 | * @param interval time interval (in seconds) between automatic reload checks | ||
39 | */ | ||
40 | AutoReloadHelper(int interval = 0); | ||
36 | 41 | ||
37 | void setMainFile(const std::string& filename); | 42 | void setMainFile(const std::string& filename); |
38 | void addFile(const std::string& filename); | 43 | void addFile(const std::string& filename); |
@@ -44,6 +49,7 @@ public: | |||
44 | private: | 49 | private: |
45 | RefCount<Command<void> > m_reload_cmd; | 50 | RefCount<Command<void> > m_reload_cmd; |
46 | std::string m_main_file; | 51 | std::string m_main_file; |
52 | Timer m_timer; | ||
47 | 53 | ||
48 | typedef std::map<std::string, time_t> TimestampMap; | 54 | typedef std::map<std::string, time_t> TimestampMap; |
49 | TimestampMap m_timestamps; | 55 | TimestampMap m_timestamps; |
diff --git a/src/Keys.cc b/src/Keys.cc index db60649..081ed8d 100644 --- a/src/Keys.cc +++ b/src/Keys.cc | |||
@@ -465,7 +465,7 @@ Keys::t_key::FindPair Keys::t_key::findBinding(vector<string> val, bool insert ) | |||
465 | 465 | ||
466 | 466 | ||
467 | Keys::Keys(): | 467 | Keys::Keys(): |
468 | m_reloader(new FbTk::AutoReloadHelper()), | 468 | m_reloader(new FbTk::AutoReloadHelper(5)), |
469 | m_keylist(0), | 469 | m_keylist(0), |
470 | next_key(0), saved_keymode(0) { | 470 | next_key(0), saved_keymode(0) { |
471 | 471 | ||