Index: webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m |
diff --git a/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m b/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m |
index 718aeca58b3860f5593fae738a1dd7d3938035f4..9eb735758127880dcfe0fddb3340408cf868117e 100644 |
--- a/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m |
+++ b/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m |
@@ -15,6 +15,8 @@ |
#import <UIKit/UIKit.h> |
@implementation RTCUIApplicationStatusObserver { |
+ BOOL _initialized; |
+ dispatch_block_t _initializeBlock; |
UIApplicationState _state; |
} |
@@ -45,21 +47,22 @@ |
_state = [UIApplication sharedApplication].applicationState; |
}]; |
- dispatch_block_t initializeBlock = ^{ |
+ _initialized = NO; |
+ _initializeBlock = dispatch_block_create(DISPATCH_BLOCK_INHERIT_QOS_CLASS, ^{ |
_state = [UIApplication sharedApplication].applicationState; |
- }; |
+ _initialized = YES; |
+ }); |
- if ([NSThread isMainThread]) { |
- initializeBlock(); |
- } else { |
- dispatch_sync(dispatch_get_main_queue(), initializeBlock); |
- } |
+ dispatch_async(dispatch_get_main_queue(), _initializeBlock); |
} |
return self; |
} |
- (BOOL)isApplicationActive { |
+ if (!_initialized) { |
+ dispatch_block_wait(_initializeBlock, DISPATCH_TIME_FOREVER); |
daniela-webrtc
2017/08/23 08:54:10
This will make the 'isApplicationActive' a blockin
andersc
2017/08/23 09:32:26
Before, we blocked on initialization by doing a di
kthelgason
2017/08/23 11:37:39
Maybe instead of blocking forever we should add a
andersc
2017/08/23 12:14:22
That sounds like a good idea! Done.
|
+ } |
return _state == UIApplicationStateActive; |
} |