diff options
| author | Stanisław Halik <sthalik@misaki.pl> | 2017-05-14 16:22:09 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-14 16:22:09 +0200 | 
| commit | 5c23666b58bb1dd4aea15c0d62a2f716d5be7f52 (patch) | |
| tree | e6497e9b55c073be209ec673ef05e62bf57a2c8f /logic | |
| parent | 4701dd3b0c8323a11cf7d5ad09c579a9864a41bd (diff) | |
| parent | c392181211b245e74292424500265323c960c1aa (diff) | |
Merge branch 'unstable' into unstable
Diffstat (limited to 'logic')
| -rw-r--r-- | logic/mappings.cpp | 6 | ||||
| -rw-r--r-- | logic/mappings.hpp | 2 | ||||
| -rw-r--r-- | logic/selected-libraries.hpp | 11 | ||||
| -rw-r--r-- | logic/state.hpp | 2 | ||||
| -rw-r--r-- | logic/tracker.cpp | 22 | ||||
| -rw-r--r-- | logic/tracker.h | 2 | ||||
| -rw-r--r-- | logic/work.cpp | 2 | ||||
| -rw-r--r-- | logic/work.hpp | 2 | 
8 files changed, 27 insertions, 22 deletions
| diff --git a/logic/mappings.cpp b/logic/mappings.cpp index d7764375..bae8c2c0 100644 --- a/logic/mappings.cpp +++ b/logic/mappings.cpp @@ -11,10 +11,10 @@ Map::Map(QString primary, QString secondary, int max_x, int max_y, axis_opts& op      spline_alt.set_max_input(opts.clamp);  } -void Map::save(QSettings& s) +void Map::save()  { -    spline_main.save(s); -    spline_alt.save(s); +    spline_main.save(); +    spline_alt.save();  }  void Map::load() diff --git a/logic/mappings.hpp b/logic/mappings.hpp index 4e0f7218..b3587749 100644 --- a/logic/mappings.hpp +++ b/logic/mappings.hpp @@ -17,7 +17,7 @@ struct OTR_LOGIC_EXPORT Map final  {      Map(QString primary, QString secondary, int max_x, int max_y, axis_opts& opts); -    void save(QSettings& s); +    void save();      void load();      axis_opts& opts; diff --git a/logic/selected-libraries.hpp b/logic/selected-libraries.hpp index 689cbec3..65e9733e 100644 --- a/logic/selected-libraries.hpp +++ b/logic/selected-libraries.hpp @@ -15,11 +15,14 @@  struct OTR_LOGIC_EXPORT SelectedLibraries  { -    using dylibptr = mem<dylib>; -    mem<ITracker> pTracker; -    mem<IFilter> pFilter; -    mem<IProtocol> pProtocol; +    using dylibptr = std::shared_ptr<dylib>; + +    std::shared_ptr<ITracker> pTracker; +    std::shared_ptr<IFilter> pFilter; +    std::shared_ptr<IProtocol> pProtocol; +      SelectedLibraries(QFrame* frame, dylibptr t, dylibptr p, dylibptr f);      SelectedLibraries() : pTracker(nullptr), pFilter(nullptr), pProtocol(nullptr), correct(false) {} +      bool correct;  }; diff --git a/logic/state.hpp b/logic/state.hpp index f5892557..8bef71ad 100644 --- a/logic/state.hpp +++ b/logic/state.hpp @@ -26,5 +26,5 @@ struct State      Modules modules;      main_settings s;      Mappings pose; -    mem<Work> work; +    std::shared_ptr<Work> work;  }; diff --git a/logic/tracker.cpp b/logic/tracker.cpp index 7411d3b4..8367ee2f 100644 --- a/logic/tracker.cpp +++ b/logic/tracker.cpp @@ -24,6 +24,7 @@  using namespace euler;  using namespace gui_tracker_impl; +using namespace time_units;  constexpr double Tracker::r2d;  constexpr double Tracker::d2r; @@ -32,7 +33,7 @@ Tracker::Tracker(Mappings& m, SelectedLibraries& libs, TrackLogger& logger) :      m(m),      libs(libs),      logger(logger), -    backlog_time(0), +    backlog_time(ns(0)),      tracking_started(false)  {  } @@ -403,21 +404,22 @@ void Tracker::run()      {          logic(); -        static constexpr long const_sleep_us = 4000; -        const long elapsed_usecs = t.elapsed_usecs(); -        t.start(); +        static constexpr ns const_sleep_ms(time_cast<ns>(ms(4))); +        const ns elapsed_nsecs = prog1(t.elapsed<ns>(), t.start()); -        backlog_time += elapsed_usecs - const_sleep_us; +        backlog_time += ns(elapsed_nsecs - const_sleep_ms); -        if (std::fabs(backlog_time) > 3000 * 1000) +        if (backlog_time > secs_(3) || backlog_time < secs_(-3))          { -            qDebug() << "tracker: backlog interval overflow" << backlog_time; -            backlog_time = 0; +            qDebug() << "tracker: backlog interval overflow" +                     << time_cast<ms>(backlog_time).count() << "ms"; +            backlog_time = backlog_time.zero();          } -        const unsigned sleep_time = unsigned(std::round(clamp((const_sleep_us - backlog_time)/1000., 0, const_sleep_us*2.5/1000))); +        const int sleep_time_ms = iround(clamp(const_sleep_ms - backlog_time, +                                               ns(0), ms(50)).count()); -        portable::sleep(sleep_time); +        portable::sleep(sleep_time_ms);      }      { diff --git a/logic/tracker.h b/logic/tracker.h index 85bd1ed8..2f29aca7 100644 --- a/logic/tracker.h +++ b/logic/tracker.h @@ -85,7 +85,7 @@ private:      state real_rotation, scaled_rotation;      euler_t t_center; -    long backlog_time; +    time_units::ns backlog_time;      bool tracking_started; diff --git a/logic/work.cpp b/logic/work.cpp index 7b9e550e..6829e62b 100644 --- a/logic/work.cpp +++ b/logic/work.cpp @@ -60,7 +60,7 @@ std::shared_ptr<TrackLogger> Work::make_logger(main_settings &s)  } -Work::Work(Mappings& m, QFrame* frame, mem<dylib> tracker_, mem<dylib> filter_, mem<dylib> proto_) : +Work::Work(Mappings& m, QFrame* frame, std::shared_ptr<dylib> tracker_, std::shared_ptr<dylib> filter_, std::shared_ptr<dylib> proto_) :      libs(frame, tracker_, filter_, proto_),      logger(make_logger(s)),      tracker(std::make_shared<Tracker>(m, libs, *logger)), diff --git a/logic/work.hpp b/logic/work.hpp index f1d5e401..dc32536c 100644 --- a/logic/work.hpp +++ b/logic/work.hpp @@ -35,7 +35,7 @@ struct OTR_LOGIC_EXPORT Work      std::shared_ptr<Shortcuts> sc;      std::vector<key_tuple> keys; -    Work(Mappings& m, QFrame* frame, mem<dylib> tracker, mem<dylib> filter, mem<dylib> proto); +    Work(Mappings& m, QFrame* frame, std::shared_ptr<dylib> tracker, std::shared_ptr<dylib> filter, std::shared_ptr<dylib> proto);      ~Work();      void reload_shortcuts();      bool is_ok() const; | 
