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 168832d9ed08a2653f2595f4f425203bde3d5f7a..84325b27f1616d5ec25dfa6e2d887ea57b141688 100644 | 
| --- a/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m | 
| +++ b/webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m | 
| @@ -19,6 +19,7 @@ | 
| @implementation RTCUIApplicationStatusObserver { | 
| BOOL _initialized; | 
| dispatch_block_t _initializeBlock; | 
| + dispatch_semaphore_t _waitForInitializeSemaphore; | 
| UIApplicationState _state; | 
| } | 
| @@ -49,6 +50,7 @@ | 
| _state = [UIApplication sharedApplication].applicationState; | 
| }]; | 
| + _waitForInitializeSemaphore = dispatch_semaphore_create(1); | 
| _initialized = NO; | 
| _initializeBlock = dispatch_block_create(DISPATCH_BLOCK_INHERIT_QOS_CLASS, ^{ | 
| _state = [UIApplication sharedApplication].applicationState; | 
| @@ -63,9 +65,13 @@ | 
| - (BOOL)isApplicationActive { | 
| if (!_initialized) { | 
| - long ret = dispatch_block_wait(_initializeBlock, | 
| - dispatch_time(DISPATCH_TIME_NOW, 10.0 * NSEC_PER_SEC)); | 
| - RTC_DCHECK_EQ(ret, 0); | 
| + dispatch_semaphore_wait(_waitForInitializeSemaphore, DISPATCH_TIME_FOREVER); | 
| 
 
daniela-webrtc
2017/09/13 09:02:50
This code is becoming slightly complex now. Would
 
andersc
2017/09/13 09:19:51
Acknowledged.
 
 | 
| + if (!_initialized) { | 
| 
 
daniela-webrtc
2017/09/13 09:02:50
I guess we want to synchronize only if the observa
 
andersc
2017/09/13 09:19:51
Not sure what you mean. Since the `dispatch_block_
 
daniela-webrtc
2017/09/13 09:30:49
Acknowledged.
 
daniela-webrtc
2017/09/13 09:30:49
Missed that there were two if statements. The comm
 
 | 
| + long ret = dispatch_block_wait(_initializeBlock, | 
| + dispatch_time(DISPATCH_TIME_NOW, 10.0 * NSEC_PER_SEC)); | 
| + RTC_DCHECK_EQ(ret, 0); | 
| + } | 
| + dispatch_semaphore_signal(_waitForInitializeSemaphore); | 
| } | 
| return _state == UIApplicationStateActive; | 
| } |