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