diff options
author | dknn <yoann.blein@free.fr> | 2012-08-10 18:04:56 (GMT) |
---|---|---|
committer | dknn <yoann.blein@free.fr> | 2012-09-22 09:32:38 (GMT) |
commit | 955c4589ca254814ae7ec6ed911e0a62febc5da1 (patch) | |
tree | 1d3ba8ecc732f8239462f7428e758224f3d38b94 /Swiften/ScreenSharing/ScreenSharingManagerImpl.cpp | |
parent | 577fffec4a1da6909740a392cf76617bdcbe5570 (diff) | |
download | swift-contrib-955c4589ca254814ae7ec6ed911e0a62febc5da1.zip swift-contrib-955c4589ca254814ae7ec6ed911e0a62febc5da1.tar.bz2 |
Capture and send user UI events
Diffstat (limited to 'Swiften/ScreenSharing/ScreenSharingManagerImpl.cpp')
-rw-r--r-- | Swiften/ScreenSharing/ScreenSharingManagerImpl.cpp | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/Swiften/ScreenSharing/ScreenSharingManagerImpl.cpp b/Swiften/ScreenSharing/ScreenSharingManagerImpl.cpp index b0e337a..c20d2c7 100644 --- a/Swiften/ScreenSharing/ScreenSharingManagerImpl.cpp +++ b/Swiften/ScreenSharing/ScreenSharingManagerImpl.cpp @@ -12,22 +12,33 @@ #include <Swiften/Presence/PresenceOracle.h> #include <Swiften/ScreenSharing/IncomingScreenSharingManager.h> #include <Swiften/ScreenSharing/OutgoingScreenSharingManager.h> +#include <Swiften/ScreenSharing/OutgoingScreenSharing.h> +#include <Swiften/ScreenSharing/InputEventResponder.h> + +#include <boost/foreach.hpp> namespace Swift { ScreenSharingManagerImpl::ScreenSharingManagerImpl(const JID& ownFullJID, JingleSessionManager *jingleSessionManager, IQRouter *iqRouter, UDPSocketFactory* udpSocketFactory, TimerFactory* timerFactory, PresenceOracle* presenceOrable, EntityCapsProvider* capsProvider) - : ownJID(ownFullJID)/*, jingleSM(jingleSessionManager), iqRouter(iqRouter), udpSocketFactory(udpSocketFactory), timerFactory(timerFactory)*/, capsProvider(capsProvider), presenceOracle(presenceOrable) + : ownJID(ownFullJID), capsProvider(capsProvider), presenceOracle(presenceOrable) { - incomingSSManager = new IncomingScreenSharingManager(jingleSessionManager, iqRouter, udpSocketFactory); + incomingSSManager = new IncomingScreenSharingManager(jingleSessionManager, iqRouter, udpSocketFactory, timerFactory); outgoingSSManager = new OutgoingScreenSharingManager(jingleSessionManager, iqRouter, udpSocketFactory, timerFactory); + responder = new InputEventResponder(this, iqRouter); + responder->start(); + incomingSSManager->onIncomingScreenSharing.connect(onIncomingScreenSharing); } ScreenSharingManagerImpl::~ScreenSharingManagerImpl() { + responder->stop(); + delete responder; + delete incomingSSManager; + delete outgoingSSManager; } boost::shared_ptr<OutgoingScreenSharing> ScreenSharingManagerImpl::createOutgoingScreenSharing(const JID &to) @@ -43,7 +54,18 @@ boost::shared_ptr<OutgoingScreenSharing> ScreenSharingManagerImpl::createOutgoin } } - return outgoingSSManager->createOutgoingScreenSharing(ownJID, recipient); + OutgoingScreenSharing::ref oss = outgoingSSManager->createOutgoingScreenSharing(ownJID, recipient); + outgoingSharings.push_back(oss); + return oss; +} + +void ScreenSharingManagerImpl::handleInputEvent(const JID& from, boost::shared_ptr<InputEventPayload> payload) +{ + foreach (OutgoingScreenSharing::ref oss, outgoingSharings) { + if (oss->getRecipient() == from) { + oss->onNewInputEvent(payload); + } + } } boost::optional<JID> ScreenSharingManagerImpl::highestPriorityJIDSupportingScreenSharing(const JID& bareJID) { |