Skip to content
This repository was archived by the owner on Mar 4, 2023. It is now read-only.

Commit f4b881e

Browse files
committed
use QThreadStorage again
thread_local cannot be an exported symbol on windows
1 parent cb1e06f commit f4b881e

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

src/datasync/defaults.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ QSqlDatabase *DatabaseRef::operator->() const
192192
const QString DefaultsPrivate::DatabaseName(QStringLiteral("__QtDataSync_database_%1_0x%2"));
193193
QMutex DefaultsPrivate::setupDefaultsMutex;
194194
QHash<QString, QSharedPointer<DefaultsPrivate>> DefaultsPrivate::setupDefaults;
195-
thread_local DefaultsPrivate::DatabaseHolder DefaultsPrivate::dbRefHash;
195+
QThreadStorage<DefaultsPrivate::DatabaseHolder> DefaultsPrivate::dbRefHash;
196196

197197
void DefaultsPrivate::createDefaults(const QString &setupName, bool isPassive, const QDir &storageDir, const QUrl &roAddress, const QHash<Defaults::PropertyKey, QVariant> &properties, QJsonSerializer *serializer, ConflictResolver *resolver)
198198
{
@@ -287,7 +287,7 @@ QSqlDatabase DefaultsPrivate::acquireDatabase()
287287
{
288288
auto name = DefaultsPrivate::DatabaseName
289289
.arg(setupName, QString::number(reinterpret_cast<quint64>(QThread::currentThread()), 16));
290-
if((dbRefHash[setupName])++ == 0) {
290+
if((dbRefHash.localData()[setupName])++ == 0) {
291291
logDebug() << "Acquiring database for thread" << QThread::currentThread();
292292
auto database = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"), name);
293293
database.setDatabaseName(storageDir.absoluteFilePath(QStringLiteral("store.db")));
@@ -331,7 +331,7 @@ QSqlDatabase DefaultsPrivate::acquireDatabase()
331331

332332
void DefaultsPrivate::releaseDatabase()
333333
{
334-
if(--(dbRefHash[setupName]) == 0) {
334+
if(--(dbRefHash.localData()[setupName]) == 0) {
335335
logDebug() << "Releasing database for thread" << QThread::currentThread();
336336
releaseDatabaseImpl(setupName);
337337
}

src/datasync/defaults_p.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ private Q_SLOTS:
8989

9090
static QMutex setupDefaultsMutex;
9191
static QHash<QString, QSharedPointer<DefaultsPrivate>> setupDefaults;
92-
static thread_local DatabaseHolder dbRefHash;
92+
static QThreadStorage<DatabaseHolder> dbRefHash;
9393

9494
QString setupName;
9595
QDir storageDir;

0 commit comments

Comments
 (0)