diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2017-10-12 18:34:05 +0200 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2017-10-24 06:24:36 +0000 |
commit | a24e76d16ab3c3b18180e3dce554bc7696ea91c0 (patch) | |
tree | f3e7653d85e2266200633e588920874b8fb84bd5 | |
parent | f0ca6eeedfe1989ff4c614082541523b047db0ec (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.cpp | 23 |
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 |