summaryrefslogtreecommitdiff
path: root/src/ivicore/qivipendingreply.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ivicore/qivipendingreply.cpp')
-rw-r--r--src/ivicore/qivipendingreply.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/ivicore/qivipendingreply.cpp b/src/ivicore/qivipendingreply.cpp
index 1780058..e7766f4 100644
--- a/src/ivicore/qivipendingreply.cpp
+++ b/src/ivicore/qivipendingreply.cpp
@@ -59,18 +59,20 @@ QT_BEGIN_NAMESPACE
#define QTIVI_ADD_STATIC_METATYPE(MetaTypeName, MetaTypeId, AliasingType) \
QTIVI_ADD_STATIC_METATYPE2(MetaTypeName, MetaTypeId, AliasingType, nullptr)
-struct QIviPendingReplyRegistrator {
- QIviPendingReplyRegistrator() {
- qRegisterMetaType<QIviPendingReplyBase>("QIviPendingReplyBase");
- QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(QTIVI_ADD_STATIC_METATYPE)
- QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(QTIVI_ADD_STATIC_METATYPE)
- QT_FOR_EACH_STATIC_CORE_POINTER(QTIVI_ADD_STATIC_METATYPE)
- QT_FOR_EACH_STATIC_CORE_TEMPLATE(QTIVI_ADD_STATIC_METATYPE)
- QT_FOR_EACH_STATIC_CORE_CLASS(QTIVI_ADD_STATIC_METATYPE)
- QT_FOR_EACH_STATIC_ALIAS_TYPE(QTIVI_ADD_STATIC_METATYPE2)
- }
-};
-static QIviPendingReplyRegistrator _registrator;
+static void qiviRegisterPendingReplyBasicTypes() {
+ static bool once = false;
+ if (once)
+ return;
+
+ qRegisterMetaType<QIviPendingReplyBase>("QIviPendingReplyBase");
+ QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(QTIVI_ADD_STATIC_METATYPE)
+ QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(QTIVI_ADD_STATIC_METATYPE)
+ QT_FOR_EACH_STATIC_CORE_POINTER(QTIVI_ADD_STATIC_METATYPE)
+ QT_FOR_EACH_STATIC_CORE_TEMPLATE(QTIVI_ADD_STATIC_METATYPE)
+ QT_FOR_EACH_STATIC_CORE_CLASS(QTIVI_ADD_STATIC_METATYPE)
+ QT_FOR_EACH_STATIC_ALIAS_TYPE(QTIVI_ADD_STATIC_METATYPE2)
+ once = true;
+}
// TODO make it reentrant
@@ -561,6 +563,7 @@ void QIviPendingReplyWatcher::then(const QJSValue &success, const QJSValue &fail
QIviPendingReplyBase::QIviPendingReplyBase(int userType)
: m_watcher(new QIviPendingReplyWatcher(userType))
{
+ qiviRegisterPendingReplyBasicTypes();
}
QIviPendingReplyBase::QIviPendingReplyBase(const QIviPendingReplyBase &other)