diff options
| -rw-r--r-- | api/plugin-support.hpp | 2 | ||||
| -rw-r--r-- | cmake/msvc.cmake | 4 | ||||
| -rw-r--r-- | cmake/opentrack-boilerplate.cmake | 2 | ||||
| -rw-r--r-- | compat/macros.hpp | 18 | ||||
| -rw-r--r-- | tracker-pt/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | tracker-pt/module/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | tracker-pt/point_tracker.h | 4 | ||||
| -rw-r--r-- | tracker-pt/pt-api.cpp | 41 | ||||
| -rw-r--r-- | tracker-pt/pt-settings.cpp | 8 | ||||
| -rw-r--r-- | tracker-pt/pt-settings.hpp | 12 | ||||
| -rw-r--r-- | variant/default/main-window.cpp | 26 | 
11 files changed, 61 insertions, 65 deletions
| diff --git a/api/plugin-support.hpp b/api/plugin-support.hpp index 5e93e119..5062a688 100644 --- a/api/plugin-support.hpp +++ b/api/plugin-support.hpp @@ -29,7 +29,7 @@  #   define OPENTRACK_SOLIB_EXT "so"  #endif -#define OPENTRACK_SOLIB_PREFIX "lib" +#define OPENTRACK_SOLIB_PREFIX ""  extern "C" typedef void* (*OPENTRACK_CTOR_FUNPTR)(void);  extern "C" typedef Metadata_* (*OPENTRACK_METADATA_FUNPTR)(void); diff --git a/cmake/msvc.cmake b/cmake/msvc.cmake index 4c629861..def8b7dc 100644 --- a/cmake/msvc.cmake +++ b/cmake/msvc.cmake @@ -42,8 +42,8 @@ if(CMAKE_PROJECT_NAME STREQUAL "opentrack")      #C4266 - no override available for virtual member function from base type, function is hidden      #C4928 - illegal copy-initialization, more than one user-defined conversion has been implicitly applied -    set(warns 4263 4264 4266 4928) -    set(warns-noerr 4265) +    set(warns 4265) +    set(warns-noerr)      foreach(i ${warns})          set(warns_ "${warns_} -w1${i} -we${i}") diff --git a/cmake/opentrack-boilerplate.cmake b/cmake/opentrack-boilerplate.cmake index 694c644d..78d0e1dd 100644 --- a/cmake/opentrack-boilerplate.cmake +++ b/cmake/opentrack-boilerplate.cmake @@ -158,7 +158,7 @@ function(otr_module n_)              set(link-mode STATIC)          endif()          add_library(${n} ${link-mode} "${${n}-all}") -        set_property(TARGET "${n}" PROPERTY PREFIX "lib") +        set_property(TARGET "${n}" PROPERTY PREFIX "")      endif()      set_property(SOURCE ${${n}-moc} ${${n}-uih} ${${n}-rcc} PROPERTY GENERATED TRUE) diff --git a/compat/macros.hpp b/compat/macros.hpp index 0807df4c..a6f3d0e9 100644 --- a/compat/macros.hpp +++ b/compat/macros.hpp @@ -40,17 +40,26 @@  #   define PP_CAT2(x,y) x ## y  #endif +#ifndef PP_EXPAND +#   define PP_EXPAND(x) PP_EXPAND__2(x) +#   define PP_EXPAND__2(x) PP_EXPAND__3(x) x +#   define PP_EXPAND__3(x) x +#endif +  #if defined __cplusplus  // from now only C++  #include <utility> -//#define once_only(...) do { static bool once__ = false; if (!once__) { once__ = true; __VA_ARGS__; } } while(false) -//#define once_only(expr) ([&] { static decltype(auto) ret___1132 = (expr); return (decltype(ret___1132) const&) ret___1132; }()) +// causes ICE in Visual Studio 2017 Preview. the ICE was reported and they handle them seriously in due time. +// the ICE is caused by decltype(auto) and const& return value +//#define eval_once(expr) ([&]() -> decltype(auto) { static decltype(auto) ret___1132 = (expr); return (decltype(ret___1132) const&) ret___1132; }()) -#define eval_once__2(expr, ident) (([&] { static bool ident = ((expr), true); (void)(ident); })) -#define eval_once(expr) eval_once__2(expr, PP_CAT(eval_once_init__, __COUNTER__)) +#define eval_once(expr) eval_once__2(expr, PP_CAT(_EVAL_ONCE__, __COUNTER__)) +#define eval_once__2(expr, ident) eval_once__3(expr, ident) +#define eval_once__3(expr, ident) \ +    ([&]() -> std::decay_t<decltype(expr)> const& { static const std::decay_t<decltype(expr)> INIT##ident = (expr); return INIT##ident; }())  #include <type_traits> @@ -68,6 +77,7 @@ constexpr cc_forceinline void static_warn<true>() {}  #define static_warning(cond)            \          static_warn<(cond)>();          \ +#define typed_progn(type, ...) (([&] () -> type { __VA_ARGS__ })())  #define progn(...) (([&] { __VA_ARGS__ })())  #define prog1(x, ...) (([&] { decltype(auto) ret1324 = (x); __VA_ARGS__; return ret1324; })()) diff --git a/tracker-pt/CMakeLists.txt b/tracker-pt/CMakeLists.txt index 326f345c..4010b6c1 100644 --- a/tracker-pt/CMakeLists.txt +++ b/tracker-pt/CMakeLists.txt @@ -1,7 +1,8 @@  find_package(OpenCV QUIET)  if(OpenCV_FOUND)      otr_module(tracker-pt-base STATIC) -    target_include_directories(opentrack-tracker-pt-base SYSTEM PUBLIC ${OpenCV_INCLUDE_DIRS}) -    target_link_libraries(opentrack-tracker-pt-base opentrack-cv opencv_core opencv_imgproc opencv_videoio) +    target_include_directories(${self} SYSTEM PUBLIC ${OpenCV_INCLUDE_DIRS}) +    target_link_libraries(${self} opentrack-cv opencv_core opencv_imgproc opencv_videoio) +    set_property(TARGET ${self} PROPERTY OUTPUT_NAME "pt-base")  endif()  add_subdirectory(module) diff --git a/tracker-pt/module/CMakeLists.txt b/tracker-pt/module/CMakeLists.txt index f0f90f8a..22b725c9 100644 --- a/tracker-pt/module/CMakeLists.txt +++ b/tracker-pt/module/CMakeLists.txt @@ -1,8 +1,6 @@  find_package(OpenCV QUIET)  if(OpenCV_FOUND) -    otr_module(tracker-pt-static STATIC) +    otr_module(tracker-pt)      target_link_libraries(${self} opentrack-tracker-pt-base)      target_include_directories(${self} PUBLIC "${CMAKE_SOURCE_DIR}/tracker-pt") -    otr_module(tracker-pt) -    target_link_libraries(${self} opentrack-tracker-pt-static)  endif() diff --git a/tracker-pt/point_tracker.h b/tracker-pt/point_tracker.h index 5e741c75..cfe3735c 100644 --- a/tracker-pt/point_tracker.h +++ b/tracker-pt/point_tracker.h @@ -84,5 +84,5 @@ private:  } // ns pt_impl -using pt_module::PointTracker; -using pt_module::PointModel; +using PointTracker = pt_module::PointTracker; +using PointModel = pt_module::PointModel; diff --git a/tracker-pt/pt-api.cpp b/tracker-pt/pt-api.cpp index 596590dc..d137a60a 100644 --- a/tracker-pt/pt-api.cpp +++ b/tracker-pt/pt-api.cpp @@ -3,9 +3,7 @@  using namespace types; -pt_camera_info::pt_camera_info() -{ -} +pt_camera_info::pt_camera_info() = default;  double pt_camera_info::get_focal_length(f fov, int res_x, int res_y)  { @@ -21,29 +19,12 @@ double pt_camera_info::get_focal_length(f fov, int res_x, int res_y)      //static bool once = false; if (!once) { once = true; qDebug() << "f" << ret << "fov" << (fov * 180/M_PI); }  } -pt_camera::pt_camera() -{ -} - -pt_camera::~pt_camera() -{ -} - -pt_runtime_traits::pt_runtime_traits() -{ -} - -pt_runtime_traits::~pt_runtime_traits() -{ -} - -pt_point_extractor::pt_point_extractor() -{ -} - -pt_point_extractor::~pt_point_extractor() -{ -} +pt_camera::pt_camera() = default; +pt_camera::~pt_camera() = default; +pt_runtime_traits::pt_runtime_traits() = default; +pt_runtime_traits::~pt_runtime_traits() = default; +pt_point_extractor::pt_point_extractor() = default; +pt_point_extractor::~pt_point_extractor() = default;  double pt_point_extractor::threshold_radius_value(int w, int h, int threshold)  { @@ -68,10 +49,6 @@ std::tuple<double, double> pt_pixel_pos_mixin::to_screen_pos(double px, double p      return std::make_tuple((px - w/2.)/w, -(py - h/2.)/w);  } -pt_frame::pt_frame() -{ -} +pt_frame::pt_frame() = default; -pt_frame::~pt_frame() -{ -} +pt_frame::~pt_frame() = default; diff --git a/tracker-pt/pt-settings.cpp b/tracker-pt/pt-settings.cpp new file mode 100644 index 00000000..5e9e1e1a --- /dev/null +++ b/tracker-pt/pt-settings.cpp @@ -0,0 +1,8 @@ +#include "pt-settings.hpp" + +namespace pt_settings_detail { + +pt_settings::pt_settings(const QString& name) : opts(name) {} +pt_settings::~pt_settings() = default; + +} // ns pt_settings_detail diff --git a/tracker-pt/pt-settings.hpp b/tracker-pt/pt-settings.hpp index a35c248b..62297713 100644 --- a/tracker-pt/pt-settings.hpp +++ b/tracker-pt/pt-settings.hpp @@ -14,12 +14,16 @@ enum pt_color_type      pt_color_blue_only = 6,  }; +namespace pt_settings_detail { + +using namespace options; +  struct pt_settings final : options::opts  {      using slider_value = options::slider_value; -    explicit pt_settings(const QString& name) : opts(name) {} -    ~pt_settings() override = default; +    explicit pt_settings(const QString& name); +    ~pt_settings() override;      value<QString> camera_name { b, "camera-name", "" };      value<int> cam_res_x { b, "camera-res-width", 640 }, @@ -54,3 +58,7 @@ struct pt_settings final : options::opts      value<slider_value> threshold_slider { b, "threshold-slider", { 128, 0, 255 } };  }; + +} // ns pt_settings_detail + +using pt_settings = pt_settings_detail::pt_settings; diff --git a/variant/default/main-window.cpp b/variant/default/main-window.cpp index 0d817bca..200400e6 100644 --- a/variant/default/main-window.cpp +++ b/variant/default/main-window.cpp @@ -866,19 +866,14 @@ void main_window::ensure_tray()  void main_window::toggle_restore_from_tray(QSystemTrayIcon::ActivationReason e)  { -    if (progn( -        switch (e) -        { -        // if we enable double click also then it causes -        // toggle back to the original state -        //case QSystemTrayIcon::DoubleClick: -        case QSystemTrayIcon::Trigger: // single click -            return false; -        default: -            return true; -        } -    )) +    switch (e)      { +    // if we enable double click also then it causes +    // toggle back to the original state +    //case QSystemTrayIcon::DoubleClick: +    case QSystemTrayIcon::Trigger: // single click +        break; +    default:          return;      } @@ -891,12 +886,11 @@ void main_window::toggle_restore_from_tray(QSystemTrayIcon::ActivationReason e)      setVisible(is_minimized);      setHidden(!is_minimized); -    setWindowState(progn( -        using ws = Qt::WindowStates; +    setWindowState(typed_progn(Qt::WindowStates,          if (is_minimized) -           return ws(windowState() & (~Qt::WindowMinimized)); +           return windowState() & ~Qt::WindowMinimized;          else -           return ws(Qt::WindowNoState); +           return Qt::WindowNoState;      ));      if (is_minimized) | 
