summaryrefslogtreecommitdiffhomepage
path: root/logic
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2017-06-18 18:19:17 +0200
committerStanislaw Halik <sthalik@misaki.pl>2017-06-18 18:48:42 +0200
commite88c7b29ea9ec9fcd6ac6b15c965085152100d2e (patch)
tree6747fe7fa797e024b986ba624d05e6f59032f0ac /logic
parent646530b5f9ca5debe7a9b4840192e32e43f919bf (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 'logic')
-rw-r--r--logic/tracker.cpp5
-rw-r--r--logic/tracker.h1
2 files changed, 2 insertions, 4 deletions
diff --git a/logic/tracker.cpp b/logic/tracker.cpp
index a5d4b86f..533a6f54 100644
--- a/logic/tracker.cpp
+++ b/logic/tracker.cpp
@@ -44,7 +44,7 @@ Tracker::Tracker(Mappings& m, SelectedLibraries& libs, TrackLogger& logger) :
Tracker::~Tracker()
{
- set(f_should_quit, true);
+ requestInterruption();
wait();
}
@@ -384,7 +384,7 @@ void Tracker::run()
t.start();
- while (!get(f_should_quit))
+ while (!isInterruptionRequested())
{
logic();
@@ -491,5 +491,4 @@ bits::bits() : b(0u)
set(f_enabled_p, true);
set(f_enabled_h, true);
set(f_zero, false);
- set(f_should_quit, false);
}
diff --git a/logic/tracker.h b/logic/tracker.h
index 2c4c5610..b1ed4042 100644
--- a/logic/tracker.h
+++ b/logic/tracker.h
@@ -40,7 +40,6 @@ struct bits
f_enabled_h = 1 << 1,
f_enabled_p = 1 << 2,
f_zero = 1 << 3,
- f_should_quit = 1 << 4,
};
std::atomic<unsigned> b;