aboutsummaryrefslogtreecommitdiffstats
path: root/src/nativewindow/native/ios/IOSmisc.m
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2019-07-08 04:55:28 +0200
committerSven Gothel <[email protected]>2019-07-08 04:55:28 +0200
commitf74e9c1597612edbff81425d4f2f528da5ebaf43 (patch)
treec45eaf4828f3a74b5066ed0f2e5dc8bf238364dc /src/nativewindow/native/ios/IOSmisc.m
parenta307ab505ed3fb5fe64f01478ce6d2933cd26c7d (diff)
iOS / MacOS: PixelScale Update
- IOSUtil/OSXUtil: Return float value and refine name to GetScreenPixelScale* - WindowDriver's updateMaxScreenPixelScaleByDisplayID(..) and updateMaxScreenPixelScaleByWindowHandle(..) will only update the maxPixelScale, as actual user pixelSize change should not be triggered here. A user pixelSize adaption to the changed underlying scale capabilities (e.g. switch monitor) should be supported by the implemented WindowDriver's: updatePixelScale(..) called by native code.
Diffstat (limited to 'src/nativewindow/native/ios/IOSmisc.m')
-rw-r--r--src/nativewindow/native/ios/IOSmisc.m41
1 files changed, 18 insertions, 23 deletions
diff --git a/src/nativewindow/native/ios/IOSmisc.m b/src/nativewindow/native/ios/IOSmisc.m
index 49fe8325e..70cff4c06 100644
--- a/src/nativewindow/native/ios/IOSmisc.m
+++ b/src/nativewindow/native/ios/IOSmisc.m
@@ -252,35 +252,35 @@ JNIEXPORT jobject JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetInsets0
/*
* Class: Java_jogamp_nativewindow_ios_IOSUtil
- * Method: GetPixelScale1
- * Signature: (I)D
+ * Method: GetScreenPixelScale1
+ * Signature: (I)F
*/
-JNIEXPORT jdouble JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetPixelScale1
- (JNIEnv *env, jclass unused, jint displayID)
+JNIEXPORT jfloat JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetScreenPixelScale1
+ (JNIEnv *env, jclass unused, jint screenIdx)
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
CGFloat pixelScale = 1.0; // default
- // UIScreen *screen = IOSUtil_getUIScreenByCGDirectDisplayID((CGDirectDisplayID)displayID);
- UIScreen *screen = [UIScreen mainScreen];
- if( NULL != screen ) {
-NS_DURING
- // Available >= 10.7
- pixelScale = [screen scale]; // HiDPI scaling
-NS_HANDLER
-NS_ENDHANDLER
+
+ NSArray *screens = [UIScreen screens];
+ int count = [screens count];
+ if( 0 <= screenIdx && screenIdx < count ) {
+ UIScreen * screen = (UIScreen *) [screens objectAtIndex: screenIdx];
+ if( NULL != screen ) {
+ pixelScale = [screen scale];
+ }
}
[pool release];
- return (jdouble)pixelScale;
+ return (jfloat)pixelScale;
}
/*
* Class: Java_jogamp_nativewindow_ios_IOSUtil
- * Method: GetPixelScale1
- * Signature: (J)D
+ * Method: GetScreenPixelScale1
+ * Signature: (J)F
*/
-JNIEXPORT jdouble JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetPixelScale2
+JNIEXPORT jfloat JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetScreenPixelScale2
(JNIEnv *env, jclass unused, jlong winOrView)
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
@@ -302,16 +302,11 @@ JNIEXPORT jdouble JNICALL Java_jogamp_nativewindow_ios_IOSUtil_GetPixelScale2
NativewindowCommon_throwNewRuntimeException(env, "neither win nor view %p\n", nsObj);
}
- CGFloat pixelScale = 1.0; // default
-NS_DURING
- // Available >= 10.7
- pixelScale = [screen scale]; // HiDPI scaling
-NS_HANDLER
-NS_ENDHANDLER
+ CGFloat pixelScale = [screen scale];
[pool release];
- return (jdouble)pixelScale;
+ return (jfloat)pixelScale;
}
/*