summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2017-10-12 18:34:05 +0200
committerAndré Hartmann <aha_1980@gmx.de>2017-10-24 06:24:36 +0000
commita24e76d16ab3c3b18180e3dce554bc7696ea91c0 (patch)
treef3e7653d85e2266200633e588920874b8fb84bd5
parentf0ca6eeedfe1989ff4c614082541523b047db0ec (diff)
TinyCAN: Fix usage of global static non-POD variablev5.10.0-beta3
Found by clazy. Change-Id: Ic935fd2e9e351b1fd1399223f38afef840b623fc Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
-rw-r--r--src/plugins/canbus/tinycan/tinycanbackend.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/plugins/canbus/tinycan/tinycanbackend.cpp b/src/plugins/canbus/tinycan/tinycanbackend.cpp
index 6405308..2d3488a 100644
--- a/src/plugins/canbus/tinycan/tinycanbackend.cpp
+++ b/src/plugins/canbus/tinycan/tinycanbackend.cpp
@@ -73,9 +73,16 @@ QList<QCanBusDeviceInfo> TinyCanBackend::interfaces()
return { createDeviceInfo(QStringLiteral("can0.0")), createDeviceInfo(QStringLiteral("can0.1")) };
}
-Q_GLOBAL_STATIC(QList<TinyCanBackendPrivate *>, qChannels)
+namespace {
-static QMutex channelsGuard(QMutex::NonRecursive);
+struct TinyCanGlobal {
+ QList<TinyCanBackendPrivate *> channels;
+ QMutex mutex;
+};
+
+} // namespace
+
+Q_GLOBAL_STATIC(TinyCanGlobal, gTinyCan)
class WriteNotifier : public QTimer
{
@@ -108,8 +115,8 @@ static void DRV_CALLBACK_TYPE canRxEventCallback(quint32 index, TCanMsg *frame,
Q_UNUSED(frame);
Q_UNUSED(count);
- QMutexLocker lock(&channelsGuard);
- for (TinyCanBackendPrivate *p : qAsConst(*qChannels())) {
+ QMutexLocker lock(&gTinyCan->mutex);
+ for (TinyCanBackendPrivate *p : qAsConst(gTinyCan->channels)) {
if (p->channelIndex == int(index)) {
p->startRead();
return;
@@ -122,16 +129,16 @@ TinyCanBackendPrivate::TinyCanBackendPrivate(TinyCanBackend *q)
{
startupDriver();
- QMutexLocker lock(&channelsGuard);
- qChannels()->append(this);
+ QMutexLocker lock(&gTinyCan->mutex);
+ gTinyCan->channels.append(this);
}
TinyCanBackendPrivate::~TinyCanBackendPrivate()
{
cleanupDriver();
- QMutexLocker lock(&channelsGuard);
- qChannels()->removeAll(this);
+ QMutexLocker lock(&gTinyCan->mutex);
+ gTinyCan->channels.removeAll(this);
}
struct BitrateItem