summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt5
-rw-r--r--FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp23
-rw-r--r--FTNoIR_Tracker_PT/ftnoir_tracker_pt.h5
-rw-r--r--ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.h4
4 files changed, 19 insertions, 18 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7e101bad..2b2e9f99 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,7 @@ include(CMakeParseArguments)
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/cmake/")
include(GetGitRevisionDescription)
+include(FindPkgConfig)
find_package(Git QUIET)
if(GIT_FOUND)
git_describe(OPENTRACK__COMMIT --tags --always)
@@ -331,7 +332,9 @@ endif()
if(SDK_ENABLE_LIBEVDEV)
opentrack_library(opentrack-proto-libevdev)
- target_link_libraries(opentrack-proto-libevdev evdev)
+ pkg_check_modules(libevdev REQUIRED QUIET libevdev)
+ include_directories(${libevdev_INCLUDE_DIRS})
+ target_link_libraries(opentrack-proto-libevdev ${libevdev_LIBRARIES})
endif()
if(SDK_FSUIPC)
diff --git a/FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp b/FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp
index 787a5128..d1e51bfc 100644
--- a/FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp
+++ b/FTNoIR_Tracker_PT/ftnoir_tracker_pt.cpp
@@ -23,12 +23,13 @@ const float deg2rad = 1.0/rad2deg;
//-----------------------------------------------------------------------------
Tracker::Tracker()
- : commands(0),
+ : mutex(QMutex::Recursive),
+ commands(0),
video_widget(NULL),
video_frame(NULL),
tracking_valid(false),
- need_apply(false),
- new_settings(nullptr)
+ new_settings(nullptr)
+
{
qDebug()<<"Tracker::Tracker";
}
@@ -115,21 +116,17 @@ void Tracker::run()
}
void Tracker::apply(settings& s)
{
- QMutexLocker lock(&mutex);
- need_apply = true;
- // caller guarantees object lifetime
+ // caller guarantees object lifetime
new_settings = &s;
}
void Tracker::apply_inner()
{
- QMutexLocker lock(&mutex);
- if (!need_apply)
- return;
- qDebug()<<"Tracker:: Applying settings";
- auto& s = *new_settings;
- new_settings = nullptr;
- need_apply = false;
+ settings* tmp = new_settings.exchange(nullptr);
+ if (tmp == nullptr)
+ return;
+ auto& s = *tmp;
+ qDebug()<<"Tracker:: Applying settings";
camera.set_device_index(s.cam_index);
camera.set_res(s.cam_res_x, s.cam_res_y);
camera.set_fps(s.cam_fps);
diff --git a/FTNoIR_Tracker_PT/ftnoir_tracker_pt.h b/FTNoIR_Tracker_PT/ftnoir_tracker_pt.h
index 47a9987b..190ed76a 100644
--- a/FTNoIR_Tracker_PT/ftnoir_tracker_pt.h
+++ b/FTNoIR_Tracker_PT/ftnoir_tracker_pt.h
@@ -25,6 +25,7 @@
#include <QMutexLocker>
#include <QTime>
#include <opencv2/opencv.hpp>
+#include <atomic>
#ifndef OPENTRACK_API
# include <boost/shared_ptr.hpp>
#else
@@ -82,10 +83,10 @@ protected:
PTVideoWidget* video_widget;
QFrame* video_frame;
- bool tracking_valid, need_apply;
+ bool tracking_valid;
settings s;
- settings* new_settings;
+ std::atomic<settings*> new_settings;
Timer time;
};
diff --git a/ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.h b/ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.h
index f92bb7bb..66f53547 100644
--- a/ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.h
+++ b/ftnoir_protocol_libevdev/ftnoir_protocol_libevdev.h
@@ -12,8 +12,8 @@
#include "facetracknoir/global-settings.h"
extern "C" {
-# include <libevdev-1.0/libevdev/libevdev.h>
-# include <libevdev-1.0/libevdev/libevdev-uinput.h>
+# include <libevdev/libevdev.h>
+# include <libevdev/libevdev-uinput.h>
}
class FTNoIR_Protocol : public IProtocol