summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/ios/qiosapplicationstate.h2
-rw-r--r--src/plugins/platforms/ios/qiosapplicationstate.mm24
2 files changed, 18 insertions, 8 deletions
diff --git a/src/plugins/platforms/ios/qiosapplicationstate.h b/src/plugins/platforms/ios/qiosapplicationstate.h
index e726ad895e..57ea547e72 100644
--- a/src/plugins/platforms/ios/qiosapplicationstate.h
+++ b/src/plugins/platforms/ios/qiosapplicationstate.h
@@ -42,6 +42,8 @@
#ifndef QIOSAPPLICATIONSTATE_H
#define QIOSAPPLICATIONSTATE_H
+#include <QtCore/qglobal.h>
+
QT_BEGIN_NAMESPACE
@class QIOSApplicationStateListener;
diff --git a/src/plugins/platforms/ios/qiosapplicationstate.mm b/src/plugins/platforms/ios/qiosapplicationstate.mm
index df64edf465..8d77e608e5 100644
--- a/src/plugins/platforms/ios/qiosapplicationstate.mm
+++ b/src/plugins/platforms/ios/qiosapplicationstate.mm
@@ -39,10 +39,12 @@
**
****************************************************************************/
-#import <UIKit/UIKit.h>
+#include "qiosapplicationstate.h"
#include <qpa/qwindowsysteminterface.h>
-#include "qiosapplicationstate.h"
+#include <QtCore/qcoreapplication.h>
+
+#import <UIKit/UIKit.h>
@interface QIOSApplicationStateListener : NSObject
@end
@@ -71,6 +73,12 @@
selector:@selector(applicationDidEnterBackground)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
+
+ // Update the current state now, since we have missed all the updates
+ // posted from AppKit so far. But let QPA finish initialization first.
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [self handleApplicationStateChanged:[UIApplication sharedApplication].applicationState];
+ });
}
return self;
}
@@ -112,6 +120,12 @@
- (void) handleApplicationStateChanged:(UIApplicationState) uiApplicationState
{
+ // We may receive application state changes after QCoreApplication has
+ // gone down, as the block we schedule on the main queue keeps the
+ // listener alive. In that case we just ignore the notification.
+ if (!qApp)
+ return;
+
Qt::ApplicationState state;
switch (uiApplicationState) {
case UIApplicationStateActive:
@@ -145,12 +159,6 @@ QT_BEGIN_NAMESPACE
QIOSApplicationState::QIOSApplicationState()
: m_listener([[QIOSApplicationStateListener alloc] init])
{
- // Update the current state now, since we have missed all the updates
- // posted from AppKit so far. But let QPA finish initialization first:
- dispatch_async(dispatch_get_main_queue(), ^{
- UIApplicationState state = [UIApplication sharedApplication].applicationState;
- [m_listener handleApplicationStateChanged:state];
- });
}
QIOSApplicationState::~QIOSApplicationState()