summaryrefslogtreecommitdiffstats
path: root/Swift
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2010-10-27 19:06:56 (GMT)
committerRemko Tronçon <git@el-tramo.be>2010-10-27 19:07:55 (GMT)
commit6810a2896f27e7ee07aee847f5e8dbccd1f6ec89 (patch)
treef7ea87f030e57cb4494a4f897506fb18fc3d2241 /Swift
parenta7da393cfc807048d320ddba8a1c7d24ef23a46e (diff)
downloadswift-contrib-6810a2896f27e7ee07aee847f5e8dbccd1f6ec89.zip
swift-contrib-6810a2896f27e7ee07aee847f5e8dbccd1f6ec89.tar.bz2
Remove MainEventLoop singleton.
The event loop now needs to be explicitly passed to clients using it.
Diffstat (limited to 'Swift')
-rw-r--r--Swift/Controllers/MainController.cpp6
-rw-r--r--Swift/Controllers/MainController.h3
-rw-r--r--Swift/QtUI/QtSwift.cpp1
-rw-r--r--Swift/QtUI/QtSwift.h1
4 files changed, 9 insertions, 2 deletions
diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index b02c78b..c9e6230 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -65,6 +65,7 @@ static const String CLIENT_NODE = "http://swift.im";
static const String SHOW_NOTIFICATIONS = "showNotifications";
MainController::MainController(
+ EventLoop* eventLoop,
ChatWindowFactory* chatWindowFactory,
MainWindowFactory *mainWindowFactory,
LoginWindowFactory *loginWindowFactory,
@@ -79,7 +80,8 @@ MainController::MainController(
Dock* dock,
Notifier* notifier,
bool useDelayForLatency) :
- timerFactory_(&boostIOServiceThread_.getIOService()),
+ eventLoop_(eventLoop),
+ timerFactory_(&boostIOServiceThread_.getIOService(), eventLoop),
idleDetector_(&idleQuerier_, &timerFactory_, 100),
storagesFactory_(storagesFactory),
chatWindowFactory_(chatWindowFactory),
@@ -361,7 +363,7 @@ void MainController::performLoginFromCachedCredentials() {
}
if (!client_) {
storages_ = storagesFactory_->createStorages(jid_);
- client_ = new Swift::Client(jid_, password_, storages_);
+ client_ = new Swift::Client(eventLoop_, jid_, password_, storages_);
client_->onDataRead.connect(boost::bind(&XMLConsoleController::handleDataRead, xmlConsoleController_, _1));
client_->onDataWritten.connect(boost::bind(&XMLConsoleController::handleDataWritten, xmlConsoleController_, _1));
client_->onError.connect(boost::bind(&MainController::handleError, this, _1));
diff --git a/Swift/Controllers/MainController.h b/Swift/Controllers/MainController.h
index 22d2559..709bacf 100644
--- a/Swift/Controllers/MainController.h
+++ b/Swift/Controllers/MainController.h
@@ -28,6 +28,7 @@
#include "Swift/Controllers/UIEvents/UIEvent.h"
namespace Swift {
+ class EventLoop;
class Client;
class ChatWindowFactory;
class ChatController;
@@ -65,6 +66,7 @@ namespace Swift {
class MainController {
public:
MainController(
+ EventLoop* eventLoop,
ChatWindowFactory* chatWindowFactory,
MainWindowFactory *mainWindowFactory,
LoginWindowFactory *loginWindowFactory,
@@ -107,6 +109,7 @@ namespace Swift {
void handleNotificationClicked(const JID& jid);
private:
+ EventLoop* eventLoop_;
BoostIOServiceThread boostIOServiceThread_;
BoostTimerFactory timerFactory_;
PlatformIdleQuerier idleQuerier_;
diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp
index d61f94c..77860d5 100644
--- a/Swift/QtUI/QtSwift.cpp
+++ b/Swift/QtUI/QtSwift.cpp
@@ -135,6 +135,7 @@ QtSwift::QtSwift(po::variables_map options) : autoUpdater_(NULL) {
QtMUCSearchWindowFactory* mucSearchWindowFactory = new QtMUCSearchWindowFactory();
mucSearchWindowFactories_.push_back(mucSearchWindowFactory);
MainController* mainController = new MainController(
+ &clientMainThreadCaller_,
chatWindowFactory_,
rosterWindowFactory,
loginWindowFactory,
diff --git a/Swift/QtUI/QtSwift.h b/Swift/QtUI/QtSwift.h
index 59fa746..6817734 100644
--- a/Swift/QtUI/QtSwift.h
+++ b/Swift/QtUI/QtSwift.h
@@ -45,6 +45,7 @@ namespace Swift {
class QtEventWindowFactory;
class QtChatListWindowFactory;
class QtMUCSearchWindowFactory;
+ class EventLoop;
class QtSwift : public QObject {
Q_OBJECT