diff options
Diffstat (limited to 'Swiften/EventLoop')
-rw-r--r-- | Swiften/EventLoop/SimpleEventLoop.cpp | 5 | ||||
-rw-r--r-- | Swiften/EventLoop/SimpleEventLoop.h | 10 |
2 files changed, 13 insertions, 2 deletions
diff --git a/Swiften/EventLoop/SimpleEventLoop.cpp b/Swiften/EventLoop/SimpleEventLoop.cpp index d745e39..2d71544 100644 --- a/Swiften/EventLoop/SimpleEventLoop.cpp +++ b/Swiften/EventLoop/SimpleEventLoop.cpp @@ -25,7 +25,7 @@ SimpleEventLoop::~SimpleEventLoop() { } } -void SimpleEventLoop::run() { +void SimpleEventLoop::doRun(bool breakAfterEvents) { while (isRunning_) { std::vector<Event> events; { @@ -38,6 +38,9 @@ void SimpleEventLoop::run() { foreach(const Event& event, events) { handleEvent(event); } + if (breakAfterEvents) { + return; + } } } diff --git a/Swiften/EventLoop/SimpleEventLoop.h b/Swiften/EventLoop/SimpleEventLoop.h index 86195e1..bdffa3d 100644 --- a/Swiften/EventLoop/SimpleEventLoop.h +++ b/Swiften/EventLoop/SimpleEventLoop.h @@ -19,12 +19,20 @@ namespace Swift { SimpleEventLoop(); ~SimpleEventLoop(); - void run(); + void run() { + doRun(false); + } + + void runUntilEvents() { + doRun(true); + } + void stop(); virtual void post(const Event& event); private: + void doRun(bool breakAfterEvents); void doStop(); private: |