summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qobject.cpp
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2012-05-17 11:02:59 +0100
committerQt by Nokia <qt-info@nokia.com>2012-05-18 10:36:42 +0200
commit276a86592a529eb0a1659764acaa4cf9f5e112a0 (patch)
treebf078acf86a4249b23b7cf048f6c5add3bbe2741 /src/corelib/kernel/qobject.cpp
parent6d7b003ac8381cf2af6ebcd255786d8e3afd21b8 (diff)
Encapsulate the dynamic meta object pointer
This change allows us to delay creating the actual meta object until it is actually required. Change-Id: I1c4a4226bd82fa606b206dd60322f49b49c32463 Reviewed-by: Kent Hansen <kent.hansen@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
-rw-r--r--src/corelib/kernel/qobject.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 29a4767d28..ca103f0f3e 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -187,6 +187,11 @@ int (*QAbstractDeclarativeData::receivers)(QAbstractDeclarativeData *, const QO
QObjectData::~QObjectData() {}
+QMetaObject *QObjectData::dynamicMetaObject() const
+{
+ return metaObject->toDynamicMetaObject(q_ptr);
+}
+
QObjectPrivate::QObjectPrivate(int version)
: threadData(0), connectionLists(0), senders(0), currentSender(0), currentChildBeingDeleted(0)
{
@@ -227,7 +232,8 @@ QObjectPrivate::~QObjectPrivate()
threadData->deref();
- delete static_cast<QAbstractDynamicMetaObject*>(metaObject);
+ if (metaObject) metaObject->objectDestroyed(q_ptr);
+
#ifndef QT_NO_USERDATA
if (extraData)
qDeleteAll(extraData->userData);