diff options
| author | Remko Tronçon <git@el-tramo.be> | 2010-01-03 09:42:47 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2010-01-03 09:42:47 (GMT) | 
| commit | e30322061756a64cd23d949e16f21dfe2f18b192 (patch) | |
| tree | 46ddb8fc61f4741107c8cb91f22ef66b4770324c | |
| parent | 09400aab33c46b7136bf7d0fab149641578e3c77 (diff) | |
| download | swift-contrib-e30322061756a64cd23d949e16f21dfe2f18b192.zip swift-contrib-e30322061756a64cd23d949e16f21dfe2f18b192.tar.bz2 | |
Don't send caps info and vcard info twice.
| -rw-r--r-- | Swift/Controllers/MainController.cpp | 11 | ||||
| -rw-r--r-- | Swiften/Elements/Presence.h | 4 | 
2 files changed, 12 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_;  		}  	} diff --git a/Swiften/Elements/Presence.h b/Swiften/Elements/Presence.h index a1f15fa..f748e44 100644 --- a/Swiften/Elements/Presence.h +++ b/Swiften/Elements/Presence.h @@ -52,6 +52,10 @@ namespace Swift {  				updatePayload(boost::shared_ptr<Priority>(new Priority(priority)));  			} +			boost::shared_ptr<Presence> clone() const { +				return boost::shared_ptr<Presence>(new Presence(*this)); +			} +  		private:  			Presence::Type type_;  	}; | 
 Swift
 Swift