diff options
-rw-r--r-- | cmake/opentrack-version.cmake | 3 | ||||
-rw-r--r-- | gui/CMakeLists.txt | 1 | ||||
-rw-r--r-- | gui/curve-config.cpp | 6 | ||||
-rw-r--r-- | gui/curve-config.h | 2 | ||||
-rw-r--r-- | gui/keyboard.h | 4 | ||||
-rw-r--r-- | gui/options-dialog.hpp | 2 | ||||
-rw-r--r-- | gui/ui.cpp | 2 | ||||
-rw-r--r-- | gui/ui.h | 10 | ||||
-rw-r--r-- | opentrack-compat/camera-names.hpp | 6 | ||||
-rw-r--r-- | opentrack-compat/export.hpp | 8 | ||||
-rw-r--r-- | opentrack-compat/import.hpp | 20 | ||||
-rw-r--r-- | opentrack-compat/options.hpp | 6 | ||||
-rw-r--r-- | opentrack-compat/shm.h | 6 | ||||
-rw-r--r-- | opentrack-compat/timer.hpp | 6 | ||||
-rw-r--r-- | opentrack-logic/CMakeLists.txt | 10 | ||||
-rw-r--r-- | opentrack-logic/export.hpp | 18 | ||||
-rw-r--r-- | opentrack-logic/import.hpp | 13 | ||||
-rw-r--r-- | opentrack-logic/keybinding-worker.cpp (renamed from opentrack/keybinding-worker.cpp) | 0 | ||||
-rw-r--r-- | opentrack-logic/keybinding-worker.hpp (renamed from opentrack/keybinding-worker.hpp) | 10 | ||||
-rw-r--r-- | opentrack-logic/main-settings.hpp (renamed from opentrack/main-settings.hpp) | 11 | ||||
-rw-r--r-- | opentrack-logic/mappings.hpp (renamed from opentrack/mappings.hpp) | 0 | ||||
-rw-r--r-- | opentrack-logic/nan.cpp (renamed from opentrack/nan.cpp) | 0 | ||||
-rw-r--r-- | opentrack-logic/selected-libraries.cpp (renamed from opentrack/selected-libraries.cpp) | 2 | ||||
-rw-r--r-- | opentrack-logic/selected-libraries.hpp (renamed from opentrack/selected-libraries.hpp) | 10 | ||||
-rw-r--r-- | opentrack-logic/shortcuts.cpp (renamed from opentrack/shortcuts.cpp) | 0 | ||||
-rw-r--r-- | opentrack-logic/shortcuts.h (renamed from opentrack/shortcuts.h) | 13 | ||||
-rw-r--r-- | opentrack-logic/state.hpp (renamed from opentrack/state.hpp) | 8 | ||||
-rw-r--r-- | opentrack-logic/tracker.cpp (renamed from opentrack/tracker.cpp) | 4 | ||||
-rw-r--r-- | opentrack-logic/tracker.h (renamed from opentrack/tracker.h) | 20 | ||||
-rw-r--r-- | opentrack-logic/win32-joystick.cpp (renamed from opentrack/win32-joystick.cpp) | 0 | ||||
-rw-r--r-- | opentrack-logic/win32-joystick.hpp (renamed from opentrack/win32-joystick.hpp) | 26 | ||||
-rw-r--r-- | opentrack-logic/win32-shortcuts.cpp (renamed from opentrack/win32-shortcuts.cpp) | 0 | ||||
-rw-r--r-- | opentrack-logic/win32-shortcuts.h (renamed from opentrack/win32-shortcuts.h) | 10 | ||||
-rw-r--r-- | opentrack-logic/work.hpp (renamed from opentrack/work.hpp) | 8 | ||||
-rw-r--r-- | opentrack/CMakeLists.txt | 10 | ||||
-rw-r--r-- | opentrack/dtors.cpp | 1 | ||||
-rw-r--r-- | opentrack/export.hpp | 18 | ||||
-rw-r--r-- | opentrack/import.hpp | 13 | ||||
-rw-r--r-- | opentrack/plugin-api.hpp | 22 | ||||
-rw-r--r-- | opentrack/simple-mat.hpp | 6 | ||||
-rw-r--r-- | proto-wine/wine-shm.h | 4 | ||||
-rw-r--r-- | tracker-joystick/CMakeLists.txt | 2 | ||||
-rw-r--r-- | tracker-joystick/ftnoir_tracker_joystick.h | 2 | ||||
-rw-r--r-- | x-plane-plugin/plugin.c | 19 |
44 files changed, 192 insertions, 150 deletions
diff --git a/cmake/opentrack-version.cmake b/cmake/opentrack-version.cmake index b5b18ff0..b1896b55 100644 --- a/cmake/opentrack-version.cmake +++ b/cmake/opentrack-version.cmake @@ -19,6 +19,7 @@ endif() file(WRITE ${CMAKE_BINARY_DIR}/opentrack-version.h "#define OPENTRACK_VERSION \"${_build_type}${OPENTRACK_COMMIT}\"") set(version-string " +#define BUILD_compat #include \"opentrack-compat/export.hpp\" #ifdef __cplusplus @@ -26,7 +27,7 @@ extern \"C\" #else extern #endif -OPENTRACK_EXPORT +OPENTRACK_COMPAT_EXPORT const char* opentrack_version; const char* opentrack_version = \"${_build_type}${OPENTRACK_COMMIT}\"; diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 08534795..b7448b4c 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -17,6 +17,7 @@ if(NOT WIN32) endif() target_link_libraries(opentrack + opentrack-logic opentrack-spline-widget opentrack-pose-widget opentrack-version diff --git a/gui/curve-config.cpp b/gui/curve-config.cpp index e4396e01..61459c1c 100644 --- a/gui/curve-config.cpp +++ b/gui/curve-config.cpp @@ -7,7 +7,7 @@ */ #include "curve-config.h" -#include "opentrack/main-settings.hpp" +#include "opentrack-logic/main-settings.hpp" MapWidget::MapWidget(Mappings& m, main_settings& s) : m(m) { @@ -54,12 +54,12 @@ MapWidget::MapWidget(Mappings& m, main_settings& s) : qfc.setEnabled(qfcs[i].checkbox->isChecked()); qfc.force_redraw(); } - + if (qfcs[i].axis >= 3) qfcs[i].qfc->set_snap(2, 5); else qfcs[i].qfc->set_snap(1, 5); - + qfcs[i].qfc->setConfig(conf, name); } } diff --git a/gui/curve-config.h b/gui/curve-config.h index 0cbc7055..9a9475b9 100644 --- a/gui/curve-config.h +++ b/gui/curve-config.h @@ -1,6 +1,6 @@ #pragma once #include <QWidget> -#include "opentrack/mappings.hpp" +#include "opentrack-logic/mappings.hpp" #include "ui_mapping.h" class MapWidget: public QWidget diff --git a/gui/keyboard.h b/gui/keyboard.h index 696df605..07f326ea 100644 --- a/gui/keyboard.h +++ b/gui/keyboard.h @@ -1,8 +1,8 @@ #pragma once #include "ui_keyboard_listener.h" #ifdef _WIN32 -#include "opentrack/win32-shortcuts.h" -#include "opentrack/keybinding-worker.hpp" +#include "opentrack-logic/win32-shortcuts.h" +#include "opentrack-logic/keybinding-worker.hpp" #endif #include <QLabel> #include <QKeyEvent> diff --git a/gui/options-dialog.hpp b/gui/options-dialog.hpp index a879a208..eee9d090 100644 --- a/gui/options-dialog.hpp +++ b/gui/options-dialog.hpp @@ -1,7 +1,7 @@ #pragma once #include "ui_settings.h" -#include "opentrack/shortcuts.h" +#include "opentrack-logic/shortcuts.h" #include <QObject> #include <QWidget> #include <functional> @@ -7,7 +7,7 @@ */ #include "ui.h" -#include "opentrack/tracker.h" +#include "opentrack-logic/tracker.h" #include "opentrack-compat/options.hpp" #include "new_file_dialog.h" #include <QFileDialog> @@ -23,12 +23,12 @@ #include "ui_main.h" #include "opentrack-compat/options.hpp" -#include "opentrack/main-settings.hpp" +#include "opentrack-logic/main-settings.hpp" #include "opentrack/plugin-support.hpp" -#include "opentrack/tracker.h" -#include "opentrack/shortcuts.h" -#include "opentrack/work.hpp" -#include "opentrack/state.hpp" +#include "opentrack-logic/tracker.h" +#include "opentrack-logic/shortcuts.h" +#include "opentrack-logic/work.hpp" +#include "opentrack-logic/state.hpp" #include "curve-config.h" #include "options-dialog.hpp" #include "process_detector.h" diff --git a/opentrack-compat/camera-names.hpp b/opentrack-compat/camera-names.hpp index c2879000..ae0c6b25 100644 --- a/opentrack-compat/camera-names.hpp +++ b/opentrack-compat/camera-names.hpp @@ -11,11 +11,7 @@ #include <QList> #include <QString> -#ifdef BUILD_compat -# include "compat-export.hpp" -#else -# include "compat-import.hpp" -#endif +#include "export.hpp" OPENTRACK_COMPAT_EXPORT QList<QString> get_camera_names(); OPENTRACK_COMPAT_EXPORT int camera_name_to_index(const QString &name); diff --git a/opentrack-compat/export.hpp b/opentrack-compat/export.hpp index 100950a0..fbb62e1f 100644 --- a/opentrack-compat/export.hpp +++ b/opentrack-compat/export.hpp @@ -1,6 +1,6 @@ #pragma once -#ifndef OPENTRACK_EXPORT +#ifdef BUILD_compat # ifdef _WIN32 # define OPENTRACK_LINKAGE __declspec(dllexport) # else @@ -8,8 +8,10 @@ # endif # ifndef _MSC_VER -# define OPENTRACK_EXPORT __attribute__ ((visibility ("default"))) OPENTRACK_LINKAGE +# define OPENTRACK_COMPAT_EXPORT __attribute__ ((visibility ("default"))) OPENTRACK_LINKAGE # else -# define OPENTRACK_EXPORT OPENTRACK_LINKAGE +# define OPENTRACK_COMPAT_EXPORT OPENTRACK_LINKAGE # endif +#else +# include "import.hpp" #endif diff --git a/opentrack-compat/import.hpp b/opentrack-compat/import.hpp index 3747b141..1b4aa8f1 100644 --- a/opentrack-compat/import.hpp +++ b/opentrack-compat/import.hpp @@ -1,15 +1,13 @@ #pragma once -#ifndef OPENTRACK_EXPORT -# ifdef _WIN32 -# define OPENTRACK_LINKAGE __declspec(dllimport) -# else -# define OPENTRACK_LINKAGE -# endif +#ifdef _WIN32 +# define OPENTRACK_LINKAGE __declspec(dllimport) +#else +# define OPENTRACK_LINKAGE +#endif -# ifndef _MSC_VER -# define OPENTRACK_EXPORT __attribute__ ((visibility ("default"))) OPENTRACK_LINKAGE -# else -# define OPENTRACK_EXPORT OPENTRACK_LINKAGE -# endif +#ifndef _MSC_VER +# define OPENTRACK_COMPAT_EXPORT __attribute__ ((visibility ("default"))) OPENTRACK_LINKAGE +#else +# define OPENTRACK_COMPAT_EXPORT OPENTRACK_LINKAGE #endif diff --git a/opentrack-compat/options.hpp b/opentrack-compat/options.hpp index 17ab093c..b8db411a 100644 --- a/opentrack-compat/options.hpp +++ b/opentrack-compat/options.hpp @@ -42,11 +42,7 @@ #include <QDebug> -#ifdef BUILD_compat -# include "compat-export.hpp" -#else -# include "compat-import.hpp" -#endif +#include "export.hpp" template<typename t> using mem = std::shared_ptr<t>; diff --git a/opentrack-compat/shm.h b/opentrack-compat/shm.h index 3edb0080..c7af4ac7 100644 --- a/opentrack-compat/shm.h +++ b/opentrack-compat/shm.h @@ -24,11 +24,7 @@ # pragma GCC diagnostic ignored "-Wattributes" #endif -#ifdef BUILD_compat -# include "compat-export.hpp" -#else -# include "compat-import.hpp" -#endif +#include "export.hpp" class OPENTRACK_COMPAT_EXPORT PortableLockedShm { public: diff --git a/opentrack-compat/timer.hpp b/opentrack-compat/timer.hpp index 4f7e8d2e..c048844c 100644 --- a/opentrack-compat/timer.hpp +++ b/opentrack-compat/timer.hpp @@ -8,6 +8,9 @@ #pragma once #include <ctime> + +#include "export.hpp" + #if defined (_WIN32) # include <windows.h> # ifndef CLOCK_MONOTONIC @@ -52,7 +55,8 @@ static inline void clock_gettime(int, struct timespec* ts) } # endif #endif -class Timer { +class OPENTRACK_COMPAT_EXPORT Timer +{ private: struct timespec state; long long conv(const struct timespec& cur) const diff --git a/opentrack-logic/CMakeLists.txt b/opentrack-logic/CMakeLists.txt new file mode 100644 index 00000000..000276d5 --- /dev/null +++ b/opentrack-logic/CMakeLists.txt @@ -0,0 +1,10 @@ +opentrack_boilerplate(opentrack-logic) +target_link_libraries(opentrack-logic opentrack-spline-widget) +if(NOT WIN32) + target_link_libraries(opentrack-logic opentrack-qxt-mini) +else() + target_link_libraries(opentrack-logic winmm) +endif() +if(CMAKE_COMPILER_IS_GNUCXX) + set_source_files_properties(nan.cpp PROPERTIES COMPILE_FLAGS "-fno-fast-math -fno-finite-math-only -fno-fast-math -O2") +endif() diff --git a/opentrack-logic/export.hpp b/opentrack-logic/export.hpp new file mode 100644 index 00000000..699fdd6a --- /dev/null +++ b/opentrack-logic/export.hpp @@ -0,0 +1,18 @@ +#pragma once + +#ifdef BUILD_logic +# ifdef _WIN32 +# define OPENTRACK_LOGIC_LINKAGE __declspec(dllexport) +# else +# define OPENTRACK_LOGIC_LINKAGE +# endif + +# ifndef _MSC_VER +# define OPENTRACK_LOGIC_EXPORT __attribute__ ((visibility ("default"))) OPENTRACK_LOGIC_LINKAGE +# else +# define OPENTRACK_LOGIC_EXPORT OPENTRACK_LINKAGE +# endif + +#else +# include "import.hpp" +#endif
\ No newline at end of file diff --git a/opentrack-logic/import.hpp b/opentrack-logic/import.hpp new file mode 100644 index 00000000..8a3e80c1 --- /dev/null +++ b/opentrack-logic/import.hpp @@ -0,0 +1,13 @@ +#pragma once + +#ifdef _WIN32 +# define OPENTRACK_LOGIC_LINKAGE __declspec(dllimport) +#else +# define OPENTRACK_LOGIC_LINKAGE +#endif + +#ifndef _MSC_VER +# define OPENTRACK_LOGIC_EXPORT __attribute__ ((visibility ("default"))) OPENTRACK_LOGIC_LINKAGE +#else +# define OPENTRACK_LOGIC_EXPORT OPENTRACK_LOGIC_LINKAGE +#endif diff --git a/opentrack/keybinding-worker.cpp b/opentrack-logic/keybinding-worker.cpp index a0c7178c..a0c7178c 100644 --- a/opentrack/keybinding-worker.cpp +++ b/opentrack-logic/keybinding-worker.cpp diff --git a/opentrack/keybinding-worker.hpp b/opentrack-logic/keybinding-worker.hpp index 19db0fa9..12237ab0 100644 --- a/opentrack/keybinding-worker.hpp +++ b/opentrack-logic/keybinding-worker.hpp @@ -8,14 +8,10 @@ #pragma once -#ifdef BUILD_api -# include "opentrack-compat/export.hpp" -#else -# include "opentrack-compat/import.hpp" -#endif +#include "export.hpp" #include "opentrack-compat/timer.hpp" -#include "opentrack/win32-joystick.hpp" +#include "win32-joystick.hpp" #include <QThread> #include <QMutex> #include <QWidget> @@ -42,7 +38,7 @@ public: bool should_process(); }; -struct OPENTRACK_EXPORT KeybindingWorker : private QThread +struct OPENTRACK_LOGIC_EXPORT KeybindingWorker : private QThread { private: LPDIRECTINPUT8 din; diff --git a/opentrack/main-settings.hpp b/opentrack-logic/main-settings.hpp index 7c04fd6d..16ff59e4 100644 --- a/opentrack/main-settings.hpp +++ b/opentrack-logic/main-settings.hpp @@ -14,7 +14,10 @@ using namespace options; -struct axis_opts { +#include "export.hpp" + +struct axis_opts +{ pbundle b; value<double> zero; value<bool> invert, altp; @@ -32,7 +35,8 @@ private: } }; -struct key_opts { +struct key_opts +{ value<QString> keycode, guid; value<int> button; @@ -43,7 +47,8 @@ struct key_opts { {} }; -struct main_settings : opts { +struct main_settings : opts +{ value<QString> tracker_dll, filter_dll, protocol_dll; axis_opts a_x, a_y, a_z, a_yaw, a_pitch, a_roll; value<bool> tcomp_p, tcomp_tz; diff --git a/opentrack/mappings.hpp b/opentrack-logic/mappings.hpp index 087ea7f3..087ea7f3 100644 --- a/opentrack/mappings.hpp +++ b/opentrack-logic/mappings.hpp diff --git a/opentrack/nan.cpp b/opentrack-logic/nan.cpp index 2522ba38..2522ba38 100644 --- a/opentrack/nan.cpp +++ b/opentrack-logic/nan.cpp diff --git a/opentrack/selected-libraries.cpp b/opentrack-logic/selected-libraries.cpp index 63517774..4a1a9f09 100644 --- a/opentrack/selected-libraries.cpp +++ b/opentrack-logic/selected-libraries.cpp @@ -1,4 +1,4 @@ -#include "opentrack/selected-libraries.hpp" +#include "selected-libraries.hpp" #include <QDebug> SelectedLibraries::SelectedLibraries(QFrame* frame, dylibptr t, dylibptr p, dylibptr f) : diff --git a/opentrack/selected-libraries.hpp b/opentrack-logic/selected-libraries.hpp index b396b5ec..2538adff 100644 --- a/opentrack/selected-libraries.hpp +++ b/opentrack-logic/selected-libraries.hpp @@ -11,14 +11,10 @@ #include "opentrack/plugin-support.hpp" #include <QFrame> +#include "export.hpp" -#ifdef BUILD_api -# include "opentrack-compat/export.hpp" -#else -# include "opentrack-compat/import.hpp" -#endif - -struct OPENTRACK_EXPORT SelectedLibraries { +struct OPENTRACK_LOGIC_EXPORT SelectedLibraries +{ using dylibptr = mem<dylib>; mem<ITracker> pTracker; mem<IFilter> pFilter; diff --git a/opentrack/shortcuts.cpp b/opentrack-logic/shortcuts.cpp index 06c246af..06c246af 100644 --- a/opentrack/shortcuts.cpp +++ b/opentrack-logic/shortcuts.cpp diff --git a/opentrack/shortcuts.h b/opentrack-logic/shortcuts.h index 2362c88b..87e24d4f 100644 --- a/opentrack/shortcuts.h +++ b/opentrack-logic/shortcuts.h @@ -12,15 +12,11 @@ #include <vector> #include <functional> -#ifdef BUILD_api -# include "opentrack-compat/export.hpp" -#else -# include "opentrack-compat/import.hpp" -#endif +#include "export.hpp" #include "qxt-mini/QxtGlobalShortcut" #include "opentrack-compat/options.hpp" -#include "opentrack/main-settings.hpp" +#include "main-settings.hpp" #ifdef _WIN32 # include "keybinding-worker.hpp" @@ -34,7 +30,8 @@ using namespace options; -struct OPENTRACK_EXPORT Shortcuts : public QObject { +struct OPENTRACK_LOGIC_EXPORT Shortcuts : public QObject +{ Q_OBJECT public: @@ -45,7 +42,7 @@ public: Key #endif ; - + using fun = std::function<void(bool)>; using tt = std::tuple<K, fun, bool>; std::vector<tt> keys; diff --git a/opentrack/state.hpp b/opentrack-logic/state.hpp index dcb18293..ff46cc36 100644 --- a/opentrack/state.hpp +++ b/opentrack-logic/state.hpp @@ -12,10 +12,10 @@ #include "opentrack-compat/options.hpp" using namespace options; #include "opentrack/plugin-support.hpp" -#include "opentrack/main-settings.hpp" -#include "opentrack/mappings.hpp" -#include "opentrack/selected-libraries.hpp" -#include "opentrack/work.hpp" +#include "main-settings.hpp" +#include "mappings.hpp" +#include "selected-libraries.hpp" +#include "work.hpp" struct State { State() : diff --git a/opentrack/tracker.cpp b/opentrack-logic/tracker.cpp index 9d754324..3b3f35e6 100644 --- a/opentrack/tracker.cpp +++ b/opentrack-logic/tracker.cpp @@ -30,7 +30,7 @@ Tracker::Tracker(main_settings& s, Mappings &m, SelectedLibraries &libs) : zero_(false), should_quit(false), libs(libs), - r_b(dmat<3,3>::eye()), + r_b(rmat::eye()), t_b {0,0,0} { } @@ -173,7 +173,6 @@ void Tracker::logic() { double tmp[3] = { t(0) - t_b[0], t(1) - t_b[1], t(2) - t_b[2] }; - t_compensate(cam, tmp, tmp, false); rmat m_; switch (s.center_method) { @@ -264,6 +263,7 @@ void Tracker::run() t.start(); double tmp[6] {0,0,0, 0,0,0}; + t_compensate(cam, tmp, tmp, false); libs.pTracker->data(tmp); if (enabledp) diff --git a/opentrack/tracker.h b/opentrack-logic/tracker.h index ea831eb0..591ca03c 100644 --- a/opentrack/tracker.h +++ b/opentrack-logic/tracker.h @@ -11,9 +11,9 @@ #include <vector> #include "opentrack-compat/timer.hpp" -#include "plugin-support.hpp" +#include "opentrack/plugin-support.hpp" #include "mappings.hpp" -#include "simple-mat.hpp" +#include "opentrack/simple-mat.hpp" #include "selected-libraries.hpp" #include "spline-widget/functionconfig.h" @@ -23,7 +23,10 @@ #include <QMutex> #include <QThread> -class Pose { +#include "export.hpp" + +class Pose +{ private: static constexpr double pi = 3.141592653; static constexpr double d2r = pi/180.0; @@ -40,13 +43,8 @@ public: inline double operator()(int i) const { return axes[i]; } }; -#ifdef BUILD_api -# include "opentrack-compat/export.hpp" -#else -# include "opentrack-compat/import.hpp" -#endif - -class OPENTRACK_EXPORT Tracker : private QThread { +class OPENTRACK_LOGIC_EXPORT Tracker : private QThread +{ Q_OBJECT private: QMutex mtx; @@ -65,7 +63,7 @@ private: using rmat = dmat<3, 3>; - dmat<3, 3> r_b; + rmat r_b; double t_b[3]; double map(double pos, Mapping& axis); diff --git a/opentrack/win32-joystick.cpp b/opentrack-logic/win32-joystick.cpp index bf919f4a..bf919f4a 100644 --- a/opentrack/win32-joystick.cpp +++ b/opentrack-logic/win32-joystick.cpp diff --git a/opentrack/win32-joystick.hpp b/opentrack-logic/win32-joystick.hpp index 9c888326..d9b62e45 100644 --- a/opentrack/win32-joystick.hpp +++ b/opentrack-logic/win32-joystick.hpp @@ -2,6 +2,8 @@ #ifdef _WIN32 +#include "export.hpp" + #include <cstring> #include <memory> #include <vector> @@ -31,18 +33,12 @@ struct hash<QString> }; } -#ifdef BUILD_api -# include "opentrack-compat/export.hpp" -#else -# include "opentrack-compat/import.hpp" -#endif - -struct OPENTRACK_EXPORT win32_joy_ctx +struct OPENTRACK_LOGIC_EXPORT win32_joy_ctx { using fn = std::function<void(const QString& guid, int btn, bool held)>; - + enum { joy_axis_size = 65535 }; - + struct joy_info { QString name, guid; @@ -51,10 +47,10 @@ struct OPENTRACK_EXPORT win32_joy_ctx void poll(fn f); bool poll_axis(const QString& guid, int axes[8]); std::vector<joy_info> get_joy_info(); - + win32_joy_ctx(const win32_joy_ctx&) = delete; win32_joy_ctx& operator=(const win32_joy_ctx&) = delete; - + win32_joy_ctx(); ~win32_joy_ctx(); void refresh(); @@ -62,10 +58,10 @@ private: QMutex mtx; QMainWindow fake_main_window; LPDIRECTINPUT8 di; - + static QString guid_to_string(const GUID guid); void release(); - + struct joy { LPDIRECTINPUTDEVICE8 joy_handle; @@ -80,7 +76,7 @@ private: void release(); bool poll(fn f); }; - + std::unordered_map<QString, std::shared_ptr<joy>> joys; class enum_state @@ -88,7 +84,7 @@ private: std::unordered_map<QString, std::shared_ptr<joy>> joys; QMainWindow& fake_main_window; LPDIRECTINPUT8 di; - + std::vector<QString> all; static BOOL CALLBACK EnumJoysticksCallback(const DIDEVICEINSTANCE* pdidInstance, VOID* pContext); static BOOL CALLBACK EnumObjectsCallback(const DIDEVICEOBJECTINSTANCE* pdidoi, VOID* ctx); diff --git a/opentrack/win32-shortcuts.cpp b/opentrack-logic/win32-shortcuts.cpp index a93803a3..a93803a3 100644 --- a/opentrack/win32-shortcuts.cpp +++ b/opentrack-logic/win32-shortcuts.cpp diff --git a/opentrack/win32-shortcuts.h b/opentrack-logic/win32-shortcuts.h index 9b2c6121..7626a31f 100644 --- a/opentrack/win32-shortcuts.h +++ b/opentrack-logic/win32-shortcuts.h @@ -3,20 +3,16 @@ #ifdef _WIN32 #include <QKeySequence> -#include "opentrack/shortcuts.h" +#include "shortcuts.h" struct win_key; extern QList<win_key> windows_key_mods; extern QList<win_key> windows_key_sequences; -#ifdef BUILD_api -# include "opentrack-compat/export.hpp" -#else -# include "opentrack-compat/import.hpp" -#endif +#include "export.hpp" -struct OPENTRACK_EXPORT win_key +struct OPENTRACK_LOGIC_EXPORT win_key { win_key(int win, Qt::Key qt) : win(win), qt(qt) {} int win; diff --git a/opentrack/work.hpp b/opentrack-logic/work.hpp index 3b65ba52..2377be5a 100644 --- a/opentrack/work.hpp +++ b/opentrack-logic/work.hpp @@ -8,10 +8,10 @@ #pragma once -#include "opentrack/main-settings.hpp" +#include "main-settings.hpp" #include "opentrack/plugin-support.hpp" -#include "opentrack/tracker.h" -#include "opentrack/shortcuts.h" +#include "tracker.h" +#include "shortcuts.h" #include <QObject> #include <QFrame> @@ -30,7 +30,7 @@ struct Work using fn = std::function<void(bool)>; using tt = std::tuple<key_opts&, fn, bool>; std::vector<tt> keys; - + Work(main_settings& s, Mappings& m, SelectedLibraries& libs, WId handle) : s(s), libs(libs), tracker(std::make_shared<Tracker>(s, m, libs)), diff --git a/opentrack/CMakeLists.txt b/opentrack/CMakeLists.txt index dd90bda6..6dc6a96d 100644 --- a/opentrack/CMakeLists.txt +++ b/opentrack/CMakeLists.txt @@ -1,10 +1,2 @@ opentrack_boilerplate(opentrack-api NO-COMPAT) -target_link_libraries(opentrack-api opentrack-spline-widget opentrack-compat) -if(NOT WIN32) - target_link_libraries(opentrack-api opentrack-qxt-mini) -else() - target_link_libraries(opentrack-api winmm) -endif() -if(CMAKE_COMPILER_IS_GNUCXX) - set_source_files_properties(nan.cpp PROPERTIES COMPILE_FLAGS "-fno-fast-math -fno-finite-math-only -fno-fast-math -O2") -endif() +target_link_libraries(opentrack-api opentrack-compat) diff --git a/opentrack/dtors.cpp b/opentrack/dtors.cpp index 578d067a..5cc87187 100644 --- a/opentrack/dtors.cpp +++ b/opentrack/dtors.cpp @@ -1,5 +1,4 @@ #include "plugin-api.hpp" -#include "main-settings.hpp" // these exist only so that vtable is emitted in a single compilation unit, not all of them. diff --git a/opentrack/export.hpp b/opentrack/export.hpp new file mode 100644 index 00000000..2dab8bef --- /dev/null +++ b/opentrack/export.hpp @@ -0,0 +1,18 @@ +#pragma once + +#ifdef BUILD_api +# ifdef _WIN32 +# define OPENTRACK_API_LINKAGE __declspec(dllexport) +# else +# define OPENTRACK_API_LINKAGE +# endif + +# ifndef _MSC_VER +# define OPENTRACK_API_EXPORT __attribute__ ((visibility ("default"))) OPENTRACK_API_LINKAGE +# else +# define OPENTRACK_API_EXPORT OPENTRACK_LINKAGE +# endif + +#else +# include "import.hpp" +#endif diff --git a/opentrack/import.hpp b/opentrack/import.hpp new file mode 100644 index 00000000..7448416a --- /dev/null +++ b/opentrack/import.hpp @@ -0,0 +1,13 @@ +#pragma once + +#ifdef _WIN32 +# define OPENTRACK_API_LINKAGE __declspec(dllimport) +#else +# define OPENTRACK_API_LINKAGE +#endif + +#ifndef _MSC_VER +# define OPENTRACK_API_EXPORT __attribute__ ((visibility ("default"))) OPENTRACK_API_LINKAGE +#else +# define OPENTRACK_API_EXPORT OPENTRACK_API_LINKAGE +#endif diff --git a/opentrack/plugin-api.hpp b/opentrack/plugin-api.hpp index e715780e..6cd76a16 100644 --- a/opentrack/plugin-api.hpp +++ b/opentrack/plugin-api.hpp @@ -13,11 +13,7 @@ #include <QFrame> #include <QIcon> -#ifdef BUILD_api -# include "opentrack-compat/export.hpp" -#else -# include "opentrack-compat/import.hpp" -#endif +#include "export.hpp" #ifndef OPENTRACK_PLUGIN_EXPORT # ifdef _WIN32 @@ -39,7 +35,7 @@ enum Axis { namespace plugin_api { namespace detail { -class OPENTRACK_EXPORT BaseDialog : public QWidget +class OPENTRACK_API_EXPORT BaseDialog : public QWidget { Q_OBJECT public: @@ -67,7 +63,7 @@ signals: // implement this in all plugins // also you must link against "opentrack-api" in CMakeLists.txt to avoid vtable link errors -struct OPENTRACK_EXPORT Metadata +struct OPENTRACK_API_EXPORT Metadata { Metadata(const Metadata&) = delete; Metadata(Metadata&&) = delete; @@ -83,7 +79,7 @@ struct OPENTRACK_EXPORT Metadata }; // implement this in filters -struct OPENTRACK_EXPORT IFilter +struct OPENTRACK_API_EXPORT IFilter { IFilter(const IFilter&) = delete; IFilter(IFilter&&) = delete; @@ -99,7 +95,7 @@ struct OPENTRACK_EXPORT IFilter virtual void center() {} }; -struct OPENTRACK_EXPORT IFilterDialog : public plugin_api::detail::BaseDialog +struct OPENTRACK_API_EXPORT IFilterDialog : public plugin_api::detail::BaseDialog { // optional destructor virtual ~IFilterDialog(); @@ -114,7 +110,7 @@ struct OPENTRACK_EXPORT IFilterDialog : public plugin_api::detail::BaseDialog OPENTRACK_DECLARE_PLUGIN_INTERNAL(filter_class, IFilter, metadata_class, dialog_class, IFilterDialog) // implement this in protocols -struct OPENTRACK_EXPORT IProtocol +struct OPENTRACK_API_EXPORT IProtocol { IProtocol(const IProtocol&) = delete; IProtocol(IProtocol&&) = delete; @@ -132,7 +128,7 @@ struct OPENTRACK_EXPORT IProtocol virtual QString game_name() = 0; }; -struct OPENTRACK_EXPORT IProtocolDialog : public plugin_api::detail::BaseDialog +struct OPENTRACK_API_EXPORT IProtocolDialog : public plugin_api::detail::BaseDialog { // optional destructor virtual ~IProtocolDialog(); @@ -147,7 +143,7 @@ struct OPENTRACK_EXPORT IProtocolDialog : public plugin_api::detail::BaseDialog OPENTRACK_DECLARE_PLUGIN_INTERNAL(protocol_class, IProtocol, metadata_class, dialog_class, IProtocolDialog) // implement this in trackers -struct OPENTRACK_EXPORT ITracker +struct OPENTRACK_API_EXPORT ITracker { ITracker(const ITracker&) = delete; ITracker(ITracker&&) = delete; @@ -162,7 +158,7 @@ struct OPENTRACK_EXPORT ITracker virtual void data(double *data) = 0; }; -struct OPENTRACK_EXPORT ITrackerDialog : public plugin_api::detail::BaseDialog +struct OPENTRACK_API_EXPORT ITrackerDialog : public plugin_api::detail::BaseDialog { // optional destructor virtual ~ITrackerDialog(); diff --git a/opentrack/simple-mat.hpp b/opentrack/simple-mat.hpp index 54ebb920..ce2bccc5 100644 --- a/opentrack/simple-mat.hpp +++ b/opentrack/simple-mat.hpp @@ -242,16 +242,18 @@ public: } }; +#include "export.hpp" + namespace euler { template<int y, int x> using dmat = Mat<double, y, x>; using rmat = dmat<3, 3>; using euler_t = dmat<3, 1>; -rmat euler_to_rmat(const double* input); +rmat OPENTRACK_API_EXPORT euler_to_rmat(const double* input); // http://stackoverflow.com/a/18436193 -euler_t rmat_to_euler(const dmat<3, 3>& R); +euler_t OPENTRACK_API_EXPORT rmat_to_euler(const dmat<3, 3>& R); } // end ns euler diff --git a/proto-wine/wine-shm.h b/proto-wine/wine-shm.h index c7e29abb..a717dcc8 100644 --- a/proto-wine/wine-shm.h +++ b/proto-wine/wine-shm.h @@ -4,9 +4,7 @@ #define WINE_MTX_NAME "facetracknoir-wine-mtx" // OSX sdk 10.8 build error otherwise -#ifdef _LIBCPP_MSVCRT -# undef _LIBCPP_MSVCRT -#endif +#undef _LIBCPP_MSVCRT #include <memory> diff --git a/tracker-joystick/CMakeLists.txt b/tracker-joystick/CMakeLists.txt index b5fbcf75..e0b6f281 100644 --- a/tracker-joystick/CMakeLists.txt +++ b/tracker-joystick/CMakeLists.txt @@ -1,3 +1,5 @@ if(WIN32) opentrack_boilerplate(opentrack-tracker-joystick) + target_link_libraries(opentrack-tracker-joystick opentrack-logic) endif() + diff --git a/tracker-joystick/ftnoir_tracker_joystick.h b/tracker-joystick/ftnoir_tracker_joystick.h index 1f940b63..31f1dee7 100644 --- a/tracker-joystick/ftnoir_tracker_joystick.h +++ b/tracker-joystick/ftnoir_tracker_joystick.h @@ -17,7 +17,7 @@ #include <cmath> #include "opentrack/plugin-api.hpp" -#include "opentrack/win32-joystick.hpp" +#include "opentrack-logic/win32-joystick.hpp" #include "opentrack-compat/options.hpp" using namespace options; diff --git a/x-plane-plugin/plugin.c b/x-plane-plugin/plugin.c index 4d4c6c92..b0a41414 100644 --- a/x-plane-plugin/plugin.c +++ b/x-plane-plugin/plugin.c @@ -22,18 +22,21 @@ #define WINE_SHM_NAME "facetracknoir-wine-shm" #define WINE_MTX_NAME "facetracknoir-wine-mtx" +#define BUILD_compat #include "../opentrack-compat/export.hpp" enum Axis { TX = 0, TY, TZ, Yaw, Pitch, Roll }; -typedef struct PortableLockedShm { +typedef struct PortableLockedShm +{ void* mem; int fd, size; } PortableLockedShm; -typedef struct WineSHM { +typedef struct WineSHM +{ double data[6]; int gameid, gameid2; unsigned char table[8]; @@ -68,7 +71,7 @@ PortableLockedShm* PortableLockedShm_init(const char *shmName, const char *OT_UN strncpy(shm_filename+1, shmName, NAME_MAX-2); shm_filename[NAME_MAX-1] = '\0'; /* (void) shm_unlink(shm_filename); */ - + self->fd = shm_open(shm_filename, O_RDWR | O_CREAT, 0600); (void) ftruncate(self->fd, mapSize); self->mem = mmap(NULL, mapSize, PROT_READ|PROT_WRITE, MAP_SHARED, self->fd, (off_t)0); @@ -149,7 +152,7 @@ static int TranslationToggleHandler( XPLMCommandRef inCommand, return 0; } -PLUGIN_API OPENTRACK_EXPORT int XPluginStart ( char * outName, char * outSignature, char * outDescription ) { +PLUGIN_API OPENTRACK_COMPAT_EXPORT int XPluginStart ( char * outName, char * outSignature, char * outDescription ) { view_x = XPLMFindDataRef("sim/aircraft/view/acf_peX"); view_y = XPLMFindDataRef("sim/aircraft/view/acf_peY"); view_z = XPLMFindDataRef("sim/aircraft/view/acf_peZ"); @@ -187,7 +190,7 @@ PLUGIN_API OPENTRACK_EXPORT int XPluginStart ( char * outName, char * outSignatu return 0; } -PLUGIN_API OPENTRACK_EXPORT void XPluginStop ( void ) { +PLUGIN_API OPENTRACK_COMPAT_EXPORT void XPluginStop ( void ) { if (lck_posix) { PortableLockedShm_free(lck_posix); @@ -196,17 +199,17 @@ PLUGIN_API OPENTRACK_EXPORT void XPluginStop ( void ) { } } -PLUGIN_API OPENTRACK_EXPORT void XPluginEnable ( void ) { +PLUGIN_API OPENTRACK_COMPAT_EXPORT void XPluginEnable ( void ) { XPLMRegisterFlightLoopCallback(write_head_position, -1.0, NULL); track_disabled = 0; } -PLUGIN_API OPENTRACK_EXPORT void XPluginDisable ( void ) { +PLUGIN_API OPENTRACK_COMPAT_EXPORT void XPluginDisable ( void ) { XPLMUnregisterFlightLoopCallback(write_head_position, NULL); track_disabled = 1; } -PLUGIN_API OPENTRACK_EXPORT void XPluginReceiveMessage( +PLUGIN_API OPENTRACK_COMPAT_EXPORT void XPluginReceiveMessage( XPLMPluginID OT_UNUSED(inFromWho), int OT_UNUSED(inMessage), void * OT_UNUSED(inParam)) |