summaryrefslogtreecommitdiffhomepage
path: root/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2014-09-22 11:50:27 +0200
committerStanislaw Halik <sthalik@misaki.pl>2014-09-22 11:52:55 +0200
commit52d2fd3bf8e3241c9a671a66daaf3150c6d7ed5b (patch)
tree6152cce0c8a40c72eaf8d5f13c1c13930e361f62 /ftnoir_tracker_udp/ftnoir_tracker_udp.cpp
parent979372baf8a990e04d2019002b7db6fdb8874dc1 (diff)
udp: cleanup, reduce mtx contention
Diffstat (limited to 'ftnoir_tracker_udp/ftnoir_tracker_udp.cpp')
-rw-r--r--ftnoir_tracker_udp/ftnoir_tracker_udp.cpp26
1 files changed, 10 insertions, 16 deletions
diff --git a/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp b/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp
index 12699a58..854cedbb 100644
--- a/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp
+++ b/ftnoir_tracker_udp/ftnoir_tracker_udp.cpp
@@ -25,13 +25,7 @@
#include "ftnoir_tracker_udp.h"
#include "facetracknoir/plugin-support.h"
-FTNoIR_Tracker::FTNoIR_Tracker() : should_quit(false)
-{
- should_quit = false;
-
- for (int i = 0; i < 6; i++)
- newHeadPose[i] = 0;
-}
+FTNoIR_Tracker::FTNoIR_Tracker() : last_recv_pose { 0,0,0, 0,0,0 }, should_quit(false) {}
FTNoIR_Tracker::~FTNoIR_Tracker()
{
@@ -40,22 +34,22 @@ FTNoIR_Tracker::~FTNoIR_Tracker()
}
void FTNoIR_Tracker::run() {
- forever {
+ QByteArray datagram;
+ datagram.resize(sizeof(last_recv_pose));
+ for (;;) {
if (should_quit)
break;
- while (inSocket.hasPendingDatagrams()) {
- QMutexLocker foo(&mutex);
- QByteArray datagram;
- datagram.resize(sizeof(newHeadPose));
- inSocket.readDatagram((char * ) newHeadPose, sizeof(double[6]));
+ QMutexLocker foo(&mutex);
+ while (sock.hasPendingDatagrams()) {
+ sock.readDatagram((char * ) last_recv_pose, sizeof(double[6]));
}
- usleep(10000);
- }
+ msleep(1);
+ }
}
void FTNoIR_Tracker::StartTracker(QFrame*)
{
- (void) inSocket.bind(QHostAddress::Any, (int) s.port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
+ (void) sock.bind(QHostAddress::Any, (int) s.port, QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);
start();
}