aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-09-30 16:22:17 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-09-30 16:22:17 +0000
commit313e8f139f8200639048ca0dc8c3aa7e202bf9aa (patch)
treea00ef632c4677f23708b573de5ff0baf7925d9b6 /src
parent1ddc6a696ef58e85569f762f2be21d54afcd48a0 (diff)
downloadqxmpp-313e8f139f8200639048ca0dc8c3aa7e202bf9aa.tar.gz
* improve cleanup of destroyed calls
* make it possible to move QXmppCall objects to threads
Diffstat (limited to 'src')
-rw-r--r--src/QXmppCallManager.cpp11
-rw-r--r--src/QXmppCallManager.h3
2 files changed, 12 insertions, 2 deletions
diff --git a/src/QXmppCallManager.cpp b/src/QXmppCallManager.cpp
index 17f4ad1c..e858f84e 100644
--- a/src/QXmppCallManager.cpp
+++ b/src/QXmppCallManager.cpp
@@ -32,6 +32,8 @@
#include "QXmppStun.h"
#include "QXmppUtils.h"
+static int typeId = qRegisterMetaType<QXmppCall::State>();
+
const int RTP_COMPONENT = 1;
const int RTCP_COMPONENT = 2;
@@ -467,8 +469,11 @@ QXmppCall *QXmppCallManager::call(const QString &jid)
{
QXmppCall *call = new QXmppCall(jid, QXmppCall::OutgoingDirection, this);
call->m_sid = generateStanzaHash();
+
+ // register call
m_calls << call;
- connect(call, SIGNAL(destroyed(QObject*)), this, SLOT(callDestroyed(QObject*)));
+ connect(call, SIGNAL(destroyed(QObject*)),
+ this, SLOT(callDestroyed(QObject*)));
connect(call, SIGNAL(stateChanged(QXmppCall::State)),
this, SLOT(callStateChanged(QXmppCall::State)));
connect(call, SIGNAL(localCandidatesChanged()),
@@ -715,7 +720,9 @@ void QXmppCallManager::jingleIqReceived(const QXmppJingleIq &iq)
}
// register call
- m_calls.append(call);
+ m_calls << call;
+ connect(call, SIGNAL(destroyed(QObject*)),
+ this, SLOT(callDestroyed(QObject*)));
connect(call, SIGNAL(stateChanged(QXmppCall::State)),
this, SLOT(callStateChanged(QXmppCall::State)));
connect(call, SIGNAL(localCandidatesChanged()),
diff --git a/src/QXmppCallManager.h b/src/QXmppCallManager.h
index 86577cee..aacf9464 100644
--- a/src/QXmppCallManager.h
+++ b/src/QXmppCallManager.h
@@ -26,6 +26,7 @@
#include <QObject>
#include <QIODevice>
+#include <QMetaType>
#include "QXmppClientExtension.h"
#include "QXmppJingleIq.h"
@@ -215,4 +216,6 @@ private:
QList<QXmppCall*> m_calls;
};
+Q_DECLARE_METATYPE(QXmppCall::State)
+
#endif