summaryrefslogtreecommitdiffhomepage
path: root/proto-udp
diff options
context:
space:
mode:
Diffstat (limited to 'proto-udp')
-rw-r--r--proto-udp/ftnoir_protocol_ftn.cpp6
-rw-r--r--proto-udp/ftnoir_protocol_ftn.h5
2 files changed, 9 insertions, 2 deletions
diff --git a/proto-udp/ftnoir_protocol_ftn.cpp b/proto-udp/ftnoir_protocol_ftn.cpp
index 0eb79954..def3ebb1 100644
--- a/proto-udp/ftnoir_protocol_ftn.cpp
+++ b/proto-udp/ftnoir_protocol_ftn.cpp
@@ -18,15 +18,19 @@ udp::udp()
QObject::connect(s.b.get(), &bundle_::changed,
this, &udp::set_dest_address,
- Qt::QueuedConnection);
+ Qt::DirectConnection);
}
void udp::pose(const double *headpose) {
+ spinlock_guard l(spl);
+
outSocket.writeDatagram((const char *) headpose, sizeof(double[6]), dest_ip, dest_port);
}
void udp::set_dest_address()
{
+ spinlock_guard l(spl);
+
dest_port = (unsigned short)s.port;
dest_ip = QHostAddress((s.ip1.to<unsigned>() & 0xff) << 24 |
(s.ip2.to<unsigned>() & 0xff) << 16 |
diff --git a/proto-udp/ftnoir_protocol_ftn.h b/proto-udp/ftnoir_protocol_ftn.h
index 8bc581bf..a7c90f5b 100644
--- a/proto-udp/ftnoir_protocol_ftn.h
+++ b/proto-udp/ftnoir_protocol_ftn.h
@@ -11,10 +11,11 @@
#pragma once
#include "ui_ftnoir_ftncontrols.h"
-#include <QUdpSocket>
#include "api/plugin-api.hpp"
+#include "compat/spinlock.hpp"
#include "options/options.hpp"
using namespace options;
+#include <QUdpSocket>
struct settings : opts {
value<int> ip1, ip2, ip3, ip4, port;
@@ -41,6 +42,8 @@ private:
QUdpSocket outSocket;
settings s;
+ mutable std::atomic_flag spl = ATOMIC_FLAG_INIT;
+
QHostAddress dest_ip { 127u << 24 | 1u };
unsigned short dest_port = 65535;