QDBusMetaTypeId: replace a volatile bool with an atomic int

Since there is no non-atomic data that is protected by 'initialized'
anymore, the read from, and the store to, 'initialized' may now have
relaxed memory ordering.

Change-Id: I58004e782d9fd93122efb31fa5b30ee160646d99
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
bb10
Marc Mutz 2012-08-24 09:47:55 +02:00 committed by The Qt Project
parent 373a7277db
commit 7121bcca2d
1 changed files with 3 additions and 3 deletions

View File

@ -91,11 +91,11 @@ inline static void registerHelper(T * = 0)
void QDBusMetaTypeId::init()
{
static volatile bool initialized = false;
static QBasicAtomicInt initialized = Q_BASIC_ATOMIC_INITIALIZER(false);
// reentrancy is not a problem since everything else is locked on their own
// set the guard variable at the end
if (!initialized) {
if (!initialized.load()) {
// register our types with QtCore (calling qMetaTypeId<T>() does this implicitly)
(void)message();
(void)argument();
@ -135,7 +135,7 @@ void QDBusMetaTypeId::init()
qDBusRegisterMetaType<QList<QDBusUnixFileDescriptor> >();
#endif
initialized = true;
initialized.store(true);
}
}