diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2017-06-18 18:19:17 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2017-06-18 18:48:42 +0200 |
commit | e88c7b29ea9ec9fcd6ac6b15c965085152100d2e (patch) | |
tree | 6747fe7fa797e024b986ba624d05e6f59032f0ac /tracker-udp/ftnoir_tracker_udp.cpp | |
parent | 646530b5f9ca5debe7a9b4840192e32e43f919bf (diff) |
get rid of "volatile" abuse
We heavily used "volatile bool" to check if the thread
loop should stop. But this functionality is already
provided by Qt5's QThread::requestInterruption.
In other cases, "volatile" is wonderfully
underspecified so it's better to ditch its usage in
favor of std::atomic<t>. At the time we don't appear to
be using the "volatile" keyword except when calling
win32's Interlocked*() family of functions as
necessary.
In freetrackclient's header the "volatile" qualifier
was used as part of a typedef. This doesn't work. Use
it as part of data declaration.
Diffstat (limited to 'tracker-udp/ftnoir_tracker_udp.cpp')
-rw-r--r-- | tracker-udp/ftnoir_tracker_udp.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/tracker-udp/ftnoir_tracker_udp.cpp b/tracker-udp/ftnoir_tracker_udp.cpp index 5f95ab5a..e2d6fc93 100644 --- a/tracker-udp/ftnoir_tracker_udp.cpp +++ b/tracker-udp/ftnoir_tracker_udp.cpp @@ -13,13 +13,12 @@ udp::udp() : last_recv_pose { 0,0,0, 0,0,0 }, - last_recv_pose2 { 0,0,0, 0,0,0 }, - should_quit(false) + last_recv_pose2 { 0,0,0, 0,0,0 } {} udp::~udp() { - should_quit = true; + requestInterruption(); wait(); } @@ -28,9 +27,10 @@ void udp::run() QByteArray datagram; datagram.resize(sizeof(last_recv_pose)); - should_quit = !sock.bind(QHostAddress::Any, quint16(s.port), QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint); + if (!sock.bind(QHostAddress::Any, quint16(s.port), QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint)) + return; - while (!should_quit) + while (!isInterruptionRequested()) { if (sock.hasPendingDatagrams()) { |