Merge pull request #12782 from Florin9doi/ios_notch

[iOS] Notch support
This commit is contained in:
Unknown W. Brackets 2020-03-31 23:28:58 -04:00 committed by GitHub
commit a1ebc35c63
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 8 deletions

View file

@ -86,11 +86,11 @@ matrix:
env: PPSSPP_BUILD_TYPE=Linux
LIBRETRO=TRUE
- os: osx
osx_image: xcode8.3
osx_image: xcode9
compiler: "clang"
env: PPSSPP_BUILD_TYPE=macOS
- os: osx
osx_image: xcode8.3
osx_image: xcode9
compiler: "clang"
env: PPSSPP_BUILD_TYPE=iOS
- os: windows

View file

@ -148,6 +148,18 @@ static LocationHelper *locationHelper;
- (void)subtleVolume:(SubtleVolume *)volumeView didChange:(CGFloat)value {
}
- (void)viewSafeAreaInsetsDidChange {
if (@available(iOS 11.0, *)) {
[super viewSafeAreaInsetsDidChange];
char safeArea[100];
// we use 0.0f instead of safeAreaInsets.bottom because the bottom overlay isn't disturbing (for now)
snprintf(safeArea, sizeof(safeArea), "%f:%f:%f:%f",
self.view.safeAreaInsets.left, self.view.safeAreaInsets.right,
self.view.safeAreaInsets.top, 0.0f);
System_SendMessage("safe_insets", safeArea);
}
}
- (void)viewDidLoad {
[super viewDidLoad];
[[DisplayManager shared] setupDisplayListener];

View file

@ -46,6 +46,11 @@ void *exception_handler(void *argument) {
return NULL;
}
static float g_safeInsetLeft = 0.0;
static float g_safeInsetRight = 0.0;
static float g_safeInsetTop = 0.0;
static float g_safeInsetBottom = 0.0;
std::string System_GetProperty(SystemProperty prop) {
switch (prop) {
@ -73,6 +78,14 @@ float System_GetPropertyFloat(SystemProperty prop) {
switch (prop) {
case SYSPROP_DISPLAY_REFRESH_RATE:
return 60.f;
case SYSPROP_DISPLAY_SAFE_INSET_LEFT:
return g_safeInsetLeft;
case SYSPROP_DISPLAY_SAFE_INSET_RIGHT:
return g_safeInsetRight;
case SYSPROP_DISPLAY_SAFE_INSET_TOP:
return g_safeInsetTop;
case SYSPROP_DISPLAY_SAFE_INSET_BOTTOM:
return g_safeInsetBottom;
default:
return -1;
}
@ -116,6 +129,14 @@ void System_SendMessage(const char *command, const char *parameter) {
} else if (!strcmp(parameter, "close")) {
stopLocation();
}
} else if (!strcmp(command, "safe_insets")) {
float left, right, top, bottom;
if (4 == sscanf(parameter, "%f:%f:%f:%f", &left, &right, &top, &bottom)) {
g_safeInsetLeft = left;
g_safeInsetRight = right;
g_safeInsetTop = top;
g_safeInsetBottom = bottom;
}
}
}