aboutsummaryrefslogtreecommitdiffstats
path: root/libpyside/globalreceiver.cpp
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2011-07-21 17:57:17 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:54:38 -0300
commitec45601aa14400b3d3e13f3f326e57d534da6ad2 (patch)
tree6ebaa966bc6518e85408a1807e5741690622f87a /libpyside/globalreceiver.cpp
parent9dd8f98e736dc70ae4f1a78f13ee643a63aa2e47 (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.cpp13
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) {