- QObject::connect(source, SIGNAL(destroyed()), parent, SLOT(detachSender()));
-}
-
-int SignalRelay::qt_metacall(QMetaObject::Call _c, int _id, void **_a) {
- _id = QObject::qt_metacall(_c, _id, _a);
- if(_id < 0)
- return _id;
- if(_c == QMetaObject::InvokeMetaMethod) {
- if(sigNames.contains(_id) || synchronize()) {
- const QList<int> &argTypes = proxy->argTypes(caller, _id);
- QVariantList params;
- int n = argTypes.size();
- for(int i=0; i<n; i++) {
- if(argTypes[i] == 0) {
- qWarning() << "SignalRelay::qt_metacall(): received invalid data for argument number" << i << "of signal" << QString("%1::%2").arg(caller->metaObject()->className()).arg(caller->metaObject()->method(_id).signature());
- qWarning() << " - make sure all your data types are known by the Qt MetaSystem";
- return _id;
- }
- params.append(QVariant(argTypes[i], _a[i+1]));
- }
- QMultiHash<int, QByteArray>::const_iterator funcIter = sigNames.constFind(_id);
- while(funcIter != sigNames.constEnd() && funcIter.key() == _id) {
- proxy->dispatchSignal(SignalProxy::RpcCall, QVariantList() << funcIter.value() << params);
- funcIter++;
- }
-
- // dispatch Sync Signal if necessary
- QByteArray signature(caller->metaObject()->method(_id).signature());
- SyncableObject *syncObject = qobject_cast<SyncableObject *>(caller);
- if(synchronize() && proxy->syncMap(syncObject).contains(signature)) {
- //qDebug() << "__SYNC__ >>>"
- // << caller->metaObject()->className()
- // << caller->objectName()
- // << signature
- // << params;
- // params.prepend(QVariant(_id));
- params.prepend(signature);
- params.prepend(syncObject->objectName());
- params.prepend(syncObject->syncMetaObject()->className());
- proxy->dispatchSignal(SignalProxy::Sync, params);
- }