summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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_;
}
}