SessionState needs to be a registered meta type
authorManuel Nickschas <sputnick@quassel-irc.org>
Thu, 7 Nov 2013 22:41:05 +0000 (23:41 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 7 Nov 2013 22:43:25 +0000 (23:43 +0100)
This is because the mono client sends the session state through
a queued signal connection.

src/common/protocol.h
src/common/quassel.cpp

index 89ef407..80b00de 100644 (file)
@@ -141,6 +141,7 @@ struct LoginSuccess : public HandshakeMessage
 // TODO: more generic format
 struct SessionState : public HandshakeMessage
 {
 // TODO: more generic format
 struct SessionState : public HandshakeMessage
 {
+    inline SessionState() {} // needed for QMetaType (for the mono client)
     inline SessionState(const QVariantList &identities, const QVariantList &bufferInfos, const QVariantList &networkIds)
     : identities(identities), bufferInfos(bufferInfos), networkIds(networkIds) {}
 
     inline SessionState(const QVariantList &identities, const QVariantList &bufferInfos, const QVariantList &networkIds)
     : identities(identities), bufferInfos(bufferInfos), networkIds(networkIds) {}
 
@@ -149,7 +150,6 @@ struct SessionState : public HandshakeMessage
     QVariantList networkIds;
 };
 
     QVariantList networkIds;
 };
 
-
 /*** handled by SignalProxy ***/
 
 struct SignalProxyMessage
 /*** handled by SignalProxy ***/
 
 struct SignalProxyMessage
index e081775..66aae90 100644 (file)
 #include <QCoreApplication>
 #include <QDateTime>
 #include <QFileInfo>
 #include <QCoreApplication>
 #include <QDateTime>
 #include <QFileInfo>
+#include <QHostAddress>
 #include <QLibraryInfo>
 #include <QSettings>
 #include <QTranslator>
 #include <QLibraryInfo>
 #include <QSettings>
 #include <QTranslator>
-#include <QHostAddress>
 
 
-#include "message.h"
+#include "bufferinfo.h"
 #include "identity.h"
 #include "identity.h"
+#include "logger.h"
+#include "message.h"
 #include "network.h"
 #include "network.h"
-#include "bufferinfo.h"
-#include "types.h"
+#include "protocol.h"
 #include "syncableobject.h"
 #include "syncableobject.h"
-#include "logger.h"
+#include "types.h"
 
 Quassel::BuildInfo Quassel::_buildInfo;
 AbstractCliParser *Quassel::_cliParser = 0;
 
 Quassel::BuildInfo Quassel::_buildInfo;
 AbstractCliParser *Quassel::_cliParser = 0;
@@ -194,6 +195,8 @@ void Quassel::registerMetaTypes()
     qRegisterMetaTypeStreamOperators<AccountId>("AccountId");
     qRegisterMetaTypeStreamOperators<MsgId>("MsgId");
 
     qRegisterMetaTypeStreamOperators<AccountId>("AccountId");
     qRegisterMetaTypeStreamOperators<MsgId>("MsgId");
 
+    qRegisterMetaType<Protocol::SessionState>("Protocol::SessionState");
+
     // Versions of Qt prior to 4.7 didn't define QVariant as a meta type
     if (!QMetaType::type("QVariant")) {
         qRegisterMetaType<QVariant>("QVariant");
     // Versions of Qt prior to 4.7 didn't define QVariant as a meta type
     if (!QMetaType::type("QVariant")) {
         qRegisterMetaType<QVariant>("QVariant");