diff options
author | Renato Filho <renato.filho@openbossa.org> | 2011-07-21 17:57:17 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:54:38 -0300 |
commit | ec45601aa14400b3d3e13f3f326e57d534da6ad2 (patch) | |
tree | 6ebaa966bc6518e85408a1807e5741690622f87a /libpyside/pyside.cpp | |
parent | 9dd8f98e736dc70ae4f1a78f13ee643a63aa2e47 (diff) |
Implemented DynamicMetaObject optiomizations.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Lauro Neto <lauro.neto@openbossa.org>
Diffstat (limited to 'libpyside/pyside.cpp')
-rw-r--r-- | libpyside/pyside.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libpyside/pyside.cpp b/libpyside/pyside.cpp index 325e27402..45ada8f47 100644 --- a/libpyside/pyside.cpp +++ b/libpyside/pyside.cpp @@ -168,6 +168,7 @@ void initDynamicMetaObject(SbkObjectType* type, const QMetaObject* base, const s //create DynamicMetaObject based on python type TypeUserData* userData = new TypeUserData(reinterpret_cast<PyTypeObject*>(type), base); userData->cppObjSize = cppObjSize; + userData->mo.update(); Shiboken::ObjectType::setTypeUserData(type, userData, Shiboken::callCppDestructor<TypeUserData>); //initialize staticQMetaObject property @@ -196,6 +197,7 @@ void initQObjectSubType(SbkObjectType* type, PyObject* args, PyObject* kwds) if (PyType_IsSubtype(base, qObjType)) { baseMo = reinterpret_cast<QMetaObject*>(Shiboken::ObjectType::getTypeUserData(reinterpret_cast<SbkObjectType*>(base))); qobjBase = reinterpret_cast<SbkObjectType*>(base); + reinterpret_cast<DynamicQMetaObject*>(baseMo)->update(); break; } } @@ -216,9 +218,9 @@ PyObject* getMetaDataFromQObject(QObject* cppSelf, PyObject* self, PyObject* nam if (attr && Property::isPropertyType(attr)) { PyObject *value = Property::getValue(reinterpret_cast<PySideProperty*>(attr), self); + Py_DECREF(attr); if (!value) return 0; - Py_DECREF(attr); Py_INCREF(value); attr = value; } |