From ec45601aa14400b3d3e13f3f326e57d534da6ad2 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Thu, 21 Jul 2011 17:57:17 -0300 Subject: Implemented DynamicMetaObject optiomizations. Reviewer: Luciano Wolf Lauro Neto --- libpyside/globalreceiver.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'libpyside/globalreceiver.cpp') 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) { -- cgit v1.2.3