summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2010-01-03 09:42:47 (GMT)
committerRemko Tronçon <git@el-tramo.be>2010-01-03 09:42:47 (GMT)
commite30322061756a64cd23d949e16f21dfe2f18b192 (patch)
tree46ddb8fc61f4741107c8cb91f22ef66b4770324c /Swift/Controllers
parent09400aab33c46b7136bf7d0fab149641578e3c77 (diff)
downloadswift-contrib-e30322061756a64cd23d949e16f21dfe2f18b192.zip
swift-contrib-e30322061756a64cd23d949e16f21dfe2f18b192.tar.bz2
Don't send caps info and vcard info twice.
Diffstat (limited to 'Swift/Controllers')
-rw-r--r--Swift/Controllers/MainController.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index 29d67b5..946b7d0 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -202,17 +202,21 @@ void MainController::handleChangeStatusRequest(StatusShow::Type show, const Stri
if (presence->getType() != Presence::Unavailable && !client_->isAvailable()) {
performLoginFromCachedCredentials();
queuedPresence_ = presence;
- } else {
+ }
+ else {
sendPresence(presence);
}
}
void MainController::sendPresence(boost::shared_ptr<Presence> presence) {
+ // Copy presence before adding extra information
+ lastSentPresence_ = presence->clone();
+
+ // Add information and send
if (!vCardPhotoHash_.isEmpty()) {
presence->addPayload(boost::shared_ptr<VCardUpdate>(new VCardUpdate(vCardPhotoHash_)));
}
presence->addPayload(capsInfo_);
- lastSentPresence_ = presence;
presenceSender_->sendPresence(presence);
if (presence->getType() == Presence::Unavailable) {
logout();
@@ -233,7 +237,8 @@ void MainController::handleInputIdleChanged(bool idle) {
else {
if (client_) {
sendPresence(preIdlePresence_);
- } else {
+ }
+ else {
queuedPresence_ = preIdlePresence_;
}
}