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..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; |
| } |