diff options
author | Peter Rustler <peter.rustler@basyskom.com> | 2015-02-10 13:31:24 +0100 |
---|---|---|
committer | Peter Rustler <peter.rustler@basyskom.com> | 2015-03-17 09:09:46 +0000 |
commit | 88e448a90b9aa7dbbfb0737c1c6330cc3433c67e (patch) | |
tree | e67d1348f9117e136d32df37188ed1e8eade72a0 /src/corelib/kernel/qjnihelpers.cpp | |
parent | 3d8c86881c7c57f646819e825c7c48f2b27bbfcc (diff) |
Added new private API for Android and onPause/onResume
On Android the foreground activity can get onPause/onResume
calls. In Nfc code in android we need to know if we are paused
or resumed. And we need to make sure to call disableForegroundDispatch
inside the onPause call and in the main Ui thread. The current
implementiton of applicationStateChanged was not sufficient to
acomplish that.
This patch adds a way to receive those onPause/onResume calls in Qt
with proper timing.
Change-Id: I3a8cec093fc02ec42cc8677dfe2d0d4f8a227f8b
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Diffstat (limited to 'src/corelib/kernel/qjnihelpers.cpp')
-rw-r--r-- | src/corelib/kernel/qjnihelpers.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/corelib/kernel/qjnihelpers.cpp b/src/corelib/kernel/qjnihelpers.cpp index dad2d5dc1e..f77fc4220c 100644 --- a/src/corelib/kernel/qjnihelpers.cpp +++ b/src/corelib/kernel/qjnihelpers.cpp @@ -122,6 +122,45 @@ void QtAndroidPrivate::handleNewIntent(JNIEnv *env, jobject intent) } } +namespace { + class ResumePauseListeners + { + public: + QMutex mutex; + QList<QtAndroidPrivate::ResumePauseListener *> listeners; + }; +} + +Q_GLOBAL_STATIC(ResumePauseListeners, g_resumePauseListeners) + +void QtAndroidPrivate::registerResumePauseListener(ResumePauseListener *listener) +{ + QMutexLocker locker(&g_resumePauseListeners()->mutex); + g_resumePauseListeners()->listeners.append(listener); +} + +void QtAndroidPrivate::unregisterResumePauseListener(ResumePauseListener *listener) +{ + QMutexLocker locker(&g_resumePauseListeners()->mutex); + g_resumePauseListeners()->listeners.removeAll(listener); +} + +void QtAndroidPrivate::handlePause() +{ + QMutexLocker locker(&g_resumePauseListeners()->mutex); + const QList<QtAndroidPrivate::ResumePauseListener *> &listeners = g_resumePauseListeners()->listeners; + for (int i=0; i<listeners.size(); ++i) + listeners.at(i)->handlePause(); +} + +void QtAndroidPrivate::handleResume() +{ + QMutexLocker locker(&g_resumePauseListeners()->mutex); + const QList<QtAndroidPrivate::ResumePauseListener *> &listeners = g_resumePauseListeners()->listeners; + for (int i=0; i<listeners.size(); ++i) + listeners.at(i)->handleResume(); +} + static inline bool exceptionCheck(JNIEnv *env) { if (env->ExceptionCheck()) { |