Chromium Code Reviews| 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; |
| } |