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/globalreceiver.cpp | |
parent | 9dd8f98e736dc70ae4f1a78f13ee643a63aa2e47 (diff) |
Implemented DynamicMetaObject optiomizations.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Lauro Neto <lauro.neto@openbossa.org>
Diffstat (limited to 'libpyside/globalreceiver.cpp')
-rw-r--r-- | libpyside/globalreceiver.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/libpyside/globalreceiver.cpp b/libpyside/globalreceiver.cpp index 89902126c..435e22aa0 100644 --- a/libpyside/globalreceiver.cpp +++ b/libpyside/globalreceiver.cpp @@ -162,6 +162,8 @@ GlobalReceiver::GlobalReceiver() { //slot used to be notifyed of object destrouction m_metaObject.addSlot(RECEIVER_DESTROYED_SLOT_NAME); + m_metaObject.update(); + setObjectName("GLOBAL RECEIVER"); } GlobalReceiver::~GlobalReceiver() @@ -198,13 +200,12 @@ void GlobalReceiver::disconnectNotify(QObject* source, int slotId) const QMetaObject* GlobalReceiver::metaObject() const { - return &m_metaObject; + return m_metaObject.update(); } -void GlobalReceiver::addSlot(const char* slot, PyObject* callback) +int GlobalReceiver::addSlot(const char* slot, PyObject* callback) { - m_metaObject.addSlot(slot); - int slotId = m_metaObject.indexOfSlot(slot); + int slotId = m_metaObject.addSlot(slot); if (!m_slotReceivers.contains(slotId)) m_slotReceivers[slotId] = new DynamicSlotData(slotId, callback, this); @@ -219,8 +220,8 @@ void GlobalReceiver::addSlot(const char* slot, PyObject* callback) if (isShortCircuit) m_shortCircuitSlots << slotId; - Q_ASSERT(slotId >= QObject::staticMetaObject.methodCount()); + return slotId; } void GlobalReceiver::removeSlot(int slotId) @@ -248,7 +249,7 @@ int GlobalReceiver::qt_metacall(QMetaObject::Call call, int id, void** args) { Q_ASSERT(call == QMetaObject::InvokeMetaMethod); Q_ASSERT(id >= QObject::staticMetaObject.methodCount()); - QMetaMethod slot = m_metaObject.method(id); + QMetaMethod slot = metaObject()->method(id); Q_ASSERT(slot.methodType() == QMetaMethod::Slot); if (strcmp(slot.signature(), RECEIVER_DESTROYED_SLOT_NAME) == 0) { |