#include "signalproxy.h"
+#include <QxtRPCPeer>
+
SignalProxy::SignalProxy(ProxyType _type, QIODevice *dev, QObject *parent) : QObject(parent), type(_type) {
if(dev) {
if(type != Client) {
}
SignalProxy::~SignalProxy() {
+ //qDebug() << "peers:" << peers.count();
foreach(Connection conn, peers) {
conn.peer->deleteLater(); conn.device->deleteLater();
}
}
void SignalProxy::attachSignal(QObject* sender, const char* signal, const QByteArray& rpcFunction) {
+ disconnect(sender, SIGNAL(destroyed(QObject *)), this, SLOT(detachObject(QObject *)));
+ connect(sender, SIGNAL(destroyed(QObject *)), this, SLOT(detachObject(QObject *)));
+
foreach(Connection conn, peers) {
conn.peer->attachSignal(sender, signal, rpcFunction);
}
attachedSignals.append(SignalDesc(sender, signal, rpcFunction));
-
}
void SignalProxy::attachSlot(const QByteArray& rpcFunction, QObject* recv, const char* slot) {
+ disconnect(recv, SIGNAL(destroyed(QObject *)), this, SLOT(detachObject(QObject *)));
+ connect(recv, SIGNAL(destroyed(QObject *)), this, SLOT(detachObject(QObject *)));
+
foreach(Connection conn, peers) {
conn.peer->attachSlot(rpcFunction, recv, slot);
}