Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Unified Diff: webrtc/sdk/objc/Framework/Classes/Common/RTCUIApplicationStatusObserver.m

Issue 3003633002: ObjC: Always dispatch async in UIApplication status observer. (Closed)
Patch Set: Use timeout and RTC_CHECK. Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698