telepathy-qt: BaseConnection::createChannel: Made ID inspection to be conditional.
Alexandr Akulich
kaffeine at kemper.freedesktop.org
Sat Aug 29 05:49:54 PDT 2015
Module: telepathy-qt
Branch: master
Commit: 44a8dba6bb038f99e6e90e275d07279375e7ba3c
URL: http://cgit.freedesktop.org/telepathy/telepathy-qt/commit/?id=44a8dba6bb038f99e6e90e275d07279375e7ba3c
Author: Alexandr Akulich <akulichalexander at gmail.com>
Date: Wed Aug 5 09:30:16 2015 +0500
BaseConnection::createChannel: Made ID inspection to be conditional.
Certain connection managers always resolve ID in createChannel callback. To
improve such cases, resolve targetID/initiatorID only if it's not resolved yet.
---
TelepathyQt/base-connection.cpp | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/TelepathyQt/base-connection.cpp b/TelepathyQt/base-connection.cpp
index 1694e69..37275ac 100644
--- a/TelepathyQt/base-connection.cpp
+++ b/TelepathyQt/base-connection.cpp
@@ -391,8 +391,8 @@ Tp::BaseChannelPtr BaseConnection::createChannel(const QVariantMap &request, boo
if (error->isValid())
return BaseChannelPtr();
- QString targetID;
- if (channel->targetHandle() != 0) {
+ QString targetID = channel->targetID();
+ if ((channel->targetHandle() != 0) && targetID.isEmpty()) {
QStringList list = mPriv->inspectHandlesCB(channel->targetHandleType(), UIntList() << channel->targetHandle(), error);
if (error->isValid()) {
debug() << "BaseConnection::createChannel: could not resolve handle " << channel->targetHandle();
@@ -401,14 +401,15 @@ Tp::BaseChannelPtr BaseConnection::createChannel(const QVariantMap &request, boo
debug() << "BaseConnection::createChannel: found targetID " << *list.begin();
targetID = *list.begin();
}
+ channel->setTargetID(targetID);
}
if (request.contains(TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle"))) {
channel->setInitiatorHandle(request.value(TP_QT_IFACE_CHANNEL + QLatin1String(".InitiatorHandle")).toUInt());
}
- QString initiatorID;
- if (channel->initiatorHandle() != 0) {
+ QString initiatorID = channel->initiatorID();
+ if ((channel->initiatorHandle() != 0) && initiatorID.isEmpty()) {
QStringList list = mPriv->inspectHandlesCB(HandleTypeContact, UIntList() << channel->initiatorHandle(), error);
if (error->isValid()) {
debug() << "BaseConnection::createChannel: could not resolve handle " << channel->initiatorHandle();
@@ -417,9 +418,8 @@ Tp::BaseChannelPtr BaseConnection::createChannel(const QVariantMap &request, boo
debug() << "BaseConnection::createChannel: found initiatorID " << *list.begin();
initiatorID = *list.begin();
}
+ channel->setInitiatorID(initiatorID);
}
- channel->setInitiatorID(initiatorID);
- channel->setTargetID(targetID);
channel->setRequested(suppressHandler);
channel->registerObject(error);
More information about the telepathy-commits
mailing list