modules/graphics/src/main/native-glass/mac/GlassScreen.m

Print this page

        

@@ -54,11 +54,11 @@
 
     if (screen != nil)
     {
         jmethodID screenInit = (*env)->GetMethodID(env, jScreenClass,
                                                    "<init>",
-                                                   "(JIIIIIIIIIIIF)V");
+                                                   "(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,29 +81,36 @@
             // 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,
-                                             (jfloat)GetScreenScaleFactor(screen));
+                                             1.0f, 1.0f,
+                                             scale, scale);
 
         GLASS_CHECK_EXCEPTION(env);
     }
 
     return jscreen;