summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/ios/qioseventdispatcher.h2
-rw-r--r--src/plugins/platforms/ios/qioseventdispatcher.mm8
2 files changed, 8 insertions, 2 deletions
diff --git a/src/plugins/platforms/ios/qioseventdispatcher.h b/src/plugins/platforms/ios/qioseventdispatcher.h
index da8464f5ee..88d5127855 100644
--- a/src/plugins/platforms/ios/qioseventdispatcher.h
+++ b/src/plugins/platforms/ios/qioseventdispatcher.h
@@ -108,6 +108,8 @@ public:
void flush();
private:
+ bool m_interrupted;
+
CFRunLoopSourceRef m_postedEventsRunLoopSource;
CFRunLoopSourceRef m_blockingTimerRunLoopSource;
diff --git a/src/plugins/platforms/ios/qioseventdispatcher.mm b/src/plugins/platforms/ios/qioseventdispatcher.mm
index a7f01a33a9..4268b02b6d 100644
--- a/src/plugins/platforms/ios/qioseventdispatcher.mm
+++ b/src/plugins/platforms/ios/qioseventdispatcher.mm
@@ -152,6 +152,7 @@ void QIOSEventDispatcher::processPostedEvents()
QIOSEventDispatcher::QIOSEventDispatcher(QObject *parent)
: QAbstractEventDispatcher(parent)
+ , m_interrupted(false)
, m_runLoopTimerRef(0)
{
CFRunLoopRef mainRunLoop = CFRunLoopGetMain();
@@ -187,6 +188,8 @@ QIOSEventDispatcher::~QIOSEventDispatcher()
bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
{
+ m_interrupted = false;
+
UIApplication *uiApplication = [UIApplication sharedApplication];
bool excludeUserEvents = flags & QEventLoop::ExcludeUserInputEvents;
bool execFlagSet = (flags & QEventLoop::DialogExec) || (flags & QEventLoop::EventLoopExec);
@@ -201,7 +204,8 @@ bool QIOSEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
return UIApplicationMain(qAppPriv->argc, qAppPriv->argv, nil, NSStringFromClass([QIOSApplicationDelegate class]));
}
} else {
- // todo: start NSRunLoop...
+ NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
+ while ([runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]] && !m_interrupted);
}
} else {
// todo: manual processEvents...
@@ -309,7 +313,7 @@ void QIOSEventDispatcher::wakeUp()
void QIOSEventDispatcher::interrupt()
{
- qDebug() << __FUNCTION__ << "not implemented";
+ m_interrupted = true;
}
void QIOSEventDispatcher::flush()