summaryrefslogtreecommitdiff
path: root/platform/ios/src/UIDevice+MGLAdditions.m
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/src/UIDevice+MGLAdditions.m')
-rw-r--r--platform/ios/src/UIDevice+MGLAdditions.m51
1 files changed, 51 insertions, 0 deletions
diff --git a/platform/ios/src/UIDevice+MGLAdditions.m b/platform/ios/src/UIDevice+MGLAdditions.m
new file mode 100644
index 0000000000..e9da77adda
--- /dev/null
+++ b/platform/ios/src/UIDevice+MGLAdditions.m
@@ -0,0 +1,51 @@
+#import "UIDevice+MGLAdditions.h"
+#include <sys/sysctl.h>
+
+@implementation UIDevice (MGLAdditions)
+
+- (NSString *)modelString {
+ char *typeSpecifier = "hw.machine";
+
+ size_t size;
+ sysctlbyname(typeSpecifier, NULL, &size, NULL, 0);
+
+ char *answer = malloc(size);
+ sysctlbyname(typeSpecifier, answer, &size, NULL, 0);
+
+ NSString *results = [NSString stringWithCString:answer encoding:NSUTF8StringEncoding];
+
+ free(answer);
+ return results;
+}
+
+- (BOOL)mgl_isLegacyDevice {
+ // This is a list of supported devices that cannot maintain a reasonable frame
+ // rate under typical load. For brevity, unsupported devices are not included.
+ NSSet *blacklist = [NSSet setWithObjects:
+ @"iPhone4", // iPhone 4s
+ @"iPhone5", // iPhone 5, 5c
+ @"iPhone6", // iPhone 5s
+
+ @"iPad2", // iPad 2, Mini
+ @"iPad3", // iPad 3
+ @"iPad4", // iPad Air, Mini 2, Mini 3
+
+ @"iPod5", // iPod Touch 5
+
+ nil
+ ];
+
+ NSString *model = [self modelString];
+
+ for (NSString *blacklistedModel in blacklist) {
+ if ([model hasPrefix:[blacklistedModel stringByAppendingString:@","]]) {
+ return YES;
+ }
+ }
+
+ // TODO: Also handle simulator using something like `ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"]`.
+
+ return NO;
+}
+
+@end