modules/graphics/src/main/native-glass/mac/GlassScreen.m
Print this page
*** 54,64 ****
if (screen != nil)
{
jmethodID screenInit = (*env)->GetMethodID(env, jScreenClass,
"<init>",
! "(JIIIIIIIIIIIF)V");
GLASS_CHECK_EXCEPTION(env);
// Note that NSDeviceResolution always reports 72 DPI, so we use Core Graphics API instead
const CGDirectDisplayID displayID = [[[screen deviceDescription] objectForKey:@"NSScreenNumber"] intValue];
CGSize size = CGDisplayScreenSize(displayID);
--- 54,64 ----
if (screen != nil)
{
jmethodID screenInit = (*env)->GetMethodID(env, jScreenClass,
"<init>",
! "(JIIIIIIIIIIIIIIIFFFF)V");
GLASS_CHECK_EXCEPTION(env);
// Note that NSDeviceResolution always reports 72 DPI, so we use Core Graphics API instead
const CGDirectDisplayID displayID = [[[screen deviceDescription] objectForKey:@"NSScreenNumber"] intValue];
CGSize size = CGDisplayScreenSize(displayID);
*** 81,109 ****
// Screens are usually create and released when an external monitor is added
// or removed, therefore the memory leaked should never grow too much.
[screen retain];
}
jscreen = (jobject)(*env)->NewObject(env, jScreenClass, screenInit,
ptr_to_jlong(screen),
(jint)NSBitsPerPixelFromDepth([screen depth]),
(jint)[screen frame].origin.x,
(jint)(primaryFrame.size.height - [screen frame].size.height - [screen frame].origin.y),
(jint)[screen frame].size.width,
(jint)[screen frame].size.height,
(jint)[screen visibleFrame].origin.x,
(jint)(primaryFrame.size.height - [screen visibleFrame].size.height - [screen visibleFrame].origin.y),
(jint)[screen visibleFrame].size.width,
(jint)[screen visibleFrame].size.height,
(jint)resolution.width,
(jint)resolution.height,
! (jfloat)GetScreenScaleFactor(screen));
GLASS_CHECK_EXCEPTION(env);
}
return jscreen;
--- 81,116 ----
// Screens are usually create and released when an external monitor is added
// or removed, therefore the memory leaked should never grow too much.
[screen retain];
}
+ jfloat scale = (jfloat)GetScreenScaleFactor(screen);
jscreen = (jobject)(*env)->NewObject(env, jScreenClass, screenInit,
ptr_to_jlong(screen),
(jint)NSBitsPerPixelFromDepth([screen depth]),
(jint)[screen frame].origin.x,
(jint)(primaryFrame.size.height - [screen frame].size.height - [screen frame].origin.y),
(jint)[screen frame].size.width,
(jint)[screen frame].size.height,
+ (jint)[screen frame].origin.x,
+ (jint)(primaryFrame.size.height - [screen frame].size.height - [screen frame].origin.y),
+ (jint)[screen frame].size.width,
+ (jint)[screen frame].size.height,
+
(jint)[screen visibleFrame].origin.x,
(jint)(primaryFrame.size.height - [screen visibleFrame].size.height - [screen visibleFrame].origin.y),
(jint)[screen visibleFrame].size.width,
(jint)[screen visibleFrame].size.height,
(jint)resolution.width,
(jint)resolution.height,
! 1.0f, 1.0f,
! scale, scale);
GLASS_CHECK_EXCEPTION(env);
}
return jscreen;