aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPavel Labath <pavelo@centrum.sk>2011-08-09 08:25:28 (GMT)
committerPavel Labath <pavelo@centrum.sk>2011-11-01 10:04:02 (GMT)
commit7a0a87b10174f2d546d96268cd63d91e7f0ae693 (patch)
treec70cb09d31bed06344a73ace3dfccd4f04666ae5 /src
parentfd902cc2c9c6c06a0d6ea30fd00652814af91013 (diff)
downloadfluxbox_paul-7a0a87b10174f2d546d96268cd63d91e7f0ae693.zip
fluxbox_paul-7a0a87b10174f2d546d96268cd63d91e7f0ae693.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.cc8
-rw-r--r--src/FbTk/AutoReloadHelper.hh8
-rw-r--r--src/Keys.cc2
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
27namespace FbTk { 28namespace FbTk {
28 29
30AutoReloadHelper::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
29void AutoReloadHelper::checkReload() { 37void 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
32namespace FbTk { 33namespace FbTk {
33 34
34class AutoReloadHelper { 35class AutoReloadHelper: private NotCopyable {
35public: 36public:
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:
44private: 49private:
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 4d366e5..66d0476 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
467Keys::Keys(): 467Keys::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