diff options
author | Pavel Labath <pavelo@centrum.sk> | 2011-08-09 08:25:28 (GMT) |
---|---|---|
committer | Pavel Labath <pavelo@centrum.sk> | 2013-02-18 21:04:26 (GMT) |
commit | baaac22cdd9d0b2353f91acbaecf75629cf85c2e (patch) | |
tree | d06832fb1f465e674944e4b7eb75cd5c712bae45 /src | |
parent | 70294ee0bbfde62bedc81363d8895719404a27ca (diff) | |
download | fluxbox_pavel-baaac22cdd9d0b2353f91acbaecf75629cf85c2e.zip fluxbox_pavel-baaac22cdd9d0b2353f91acbaecf75629cf85c2e.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 426e43a..6b7e343 100644 --- a/src/Keys.cc +++ b/src/Keys.cc | |||
@@ -467,7 +467,7 @@ Keys::t_key::FindPair Keys::t_key::findBinding(vector<string> val, bool insert ) | |||
467 | 467 | ||
468 | 468 | ||
469 | Keys::Keys(): | 469 | Keys::Keys(): |
470 | m_reloader(new FbTk::AutoReloadHelper()), | 470 | m_reloader(new FbTk::AutoReloadHelper(5)), |
471 | m_keylist(0), | 471 | m_keylist(0), |
472 | next_key(0), saved_keymode(0) { | 472 | next_key(0), saved_keymode(0) { |
473 | 473 | ||