- New SignalProxy which is kinda sorta based on the idea of the QxtRPCPeer, though...
[quassel.git] / src / common / synchronizer.cpp
index 8c29400..de2b846 100644 (file)
@@ -122,8 +122,6 @@ void Synchronizer::parentChangedName() {
   proxy()->detachObject(parent());
   proxy()->detachObject(this);
   attach();
-  if(proxy()->proxyType() == SignalProxy::Client && initialized())
-    proxy()->detachObject(this);
 }
 
 // ====================
@@ -244,7 +242,7 @@ QList<QMetaMethod> Synchronizer::getMethodByName(const QString &methodname) {
 }
 
 void Synchronizer::attach() {
-  if(proxy()->proxyType() == SignalProxy::Server)
+  if(proxy()->rpcType() == SignalProxy::Server)
     attachAsMaster();
   else
     attachAsSlave();
@@ -276,16 +274,18 @@ void Synchronizer::attachAsSlave() {
     }
   }
 
-  // and then we connect ourself, so we can receive init data
-  // qDebug() << "attachSlot:" << initSignal() << "recvInitData(QVariantMap)";
-  // qDebug() << "attachSignal:" << "requestSync()" << requestSyncSignal();
-  proxy()->attachSlot(initSignal().toAscii(), this, SLOT(recvInitData(QVariantMap)));
-  proxy()->attachSignal(this, SIGNAL(requestSync()), requestSyncSignal().toAscii());
-
   if(!getMethodByName("setInitialized()").isEmpty())
     connect(this, SIGNAL(initDone()), parent(), SLOT(setInitialized()));
 
-  emit requestSync();
+  if(!initialized()) {
+    // and then we connect ourself, so we can receive init data
+    // qDebug() << "attachSlot:" << initSignal() << "recvInitData(QVariantMap)";
+    // qDebug() << "attachSignal:" << "requestSync()" << requestSyncSignal();
+    proxy()->attachSlot(initSignal().toAscii(), this, SLOT(recvInitData(QVariantMap)));
+    proxy()->attachSignal(this, SIGNAL(requestSync()), requestSyncSignal().toAscii());
+
+    emit requestSync();
+  }
 }
 
 void Synchronizer::attachAsMaster() {
@@ -341,3 +341,5 @@ bool Synchronizer::setInitValue(const QString &property, const QVariant &value)
   QGenericArgument param = QGenericArgument(paramtype, &value);
   return QMetaObject::invokeMethod(parent(), handlername.toAscii(), param);
 }
+
+