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..c598a0e56c03fda351d3504b5f305c408c4d2140 100644 |
--- a/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m |
+++ b/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m |
@@ -14,7 +14,11 @@ |
#import <UIKit/UIKit.h> |
+#include "webrtc/rtc_base/checks.h" |
+ |
@implementation RTCUIApplicationStatusObserver { |
+ BOOL _initialized; |
+ dispatch_block_t _initializeBlock; |
UIApplicationState _state; |
} |
@@ -45,21 +49,24 @@ |
_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) { |
+ long ret = |
+ dispatch_block_wait(_initializeBlock, dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC)); |
+ RTC_CHECK_EQ(ret, 0); |
kthelgason
2017/08/23 13:25:46
just a nit, but in the future be aware that the ar
|
+ } |
return _state == UIApplicationStateActive; |
} |