diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2016-07-22 10:24:22 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2016-07-23 11:05:33 +0200 |
commit | c25ad3f1936028590358558bbf87b80c33613261 (patch) | |
tree | a40745ba9125cc7b9dc61d5f9353d7b5034065fc /opentrack-logic/work.cpp | |
parent | 81310e18abba8d17289cde6670e62d96f24e9d01 (diff) |
logic/work: move from header
Diffstat (limited to 'opentrack-logic/work.cpp')
-rw-r--r-- | opentrack-logic/work.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/opentrack-logic/work.cpp b/opentrack-logic/work.cpp new file mode 100644 index 00000000..820112bf --- /dev/null +++ b/opentrack-logic/work.cpp @@ -0,0 +1,32 @@ +#include "work.hpp" + + +Work::Work(Mappings& m, SelectedLibraries& libs, WId handle) : + libs(libs), + tracker(std::make_shared<Tracker>(m, libs)), + sc(std::make_shared<Shortcuts>()), + handle(handle), + keys { + key_tuple(s.key_center, [&](bool) -> void { tracker->center(); }, true), + key_tuple(s.key_toggle, [&](bool) -> void { tracker->toggle_enabled(); }, true), + key_tuple(s.key_zero, [&](bool) -> void { tracker->zero(); }, true), + key_tuple(s.key_toggle_press, [&](bool x) -> void { tracker->set_toggle(!x); }, false), + key_tuple(s.key_zero_press, [&](bool x) -> void { tracker->set_zero(x); }, false), + } +{ + reload_shortcuts(); + tracker->start(); +} + +void Work::reload_shortcuts() +{ + sc->reload(keys); +} + +Work::~Work() +{ + sc = nullptr; + // order matters, otherwise use-after-free -sh + tracker = nullptr; + libs = SelectedLibraries(); +} |