diff options
author | Pavel Labath <pavelo@centrum.sk> | 2011-08-09 08:25:28 (GMT) |
---|---|---|
committer | Pavel Labath <pavelo@centrum.sk> | 2011-08-09 08:28:31 (GMT) |
commit | 75c2d19358daba345d9e298c78041eea4a8f2116 (patch) | |
tree | 2e994f7fec2377150198fed4c40930a5459126ee /src/FbTk | |
parent | 2741ca1fceda384500e1c5b6781c167353b19092 (diff) | |
download | fluxbox_pavel-75c2d19358daba345d9e298c78041eea4a8f2116.zip fluxbox_pavel-75c2d19358daba345d9e298c78041eea4a8f2116.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/FbTk')
-rw-r--r-- | src/FbTk/AutoReloadHelper.cc | 8 | ||||
-rw-r--r-- | src/FbTk/AutoReloadHelper.hh | 8 |
2 files changed, 15 insertions, 1 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; |