From http://www.jwz.org/xscreensaver/xscreensaver-5.40.tar.gz
[xscreensaver] / OSX / grabclient-osx.m
index 8542d12786111d6ad1d7006a729129a227369acf..7bfdcb4fa811b0e921dbd585f571b2422e4e39c2 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1992-2017 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -286,6 +286,8 @@ osx_grab_desktop_image (Screen *screen, Window xwindow, Drawable drawable,
          use it if when being compiled against the 10.5 SDK or later.
        */
 
+extern float jwxyz_scale (Window);  /* jwxyzI.h */
+
 /* Loads an image into the Drawable, returning once the image is loaded.
  */
 Bool
@@ -307,10 +309,11 @@ osx_grab_desktop_image (Screen *screen, Window xwindow, Drawable drawable,
   // Grab only the rectangle of the screen underlying this window.
   //
   CGRect cgrect;
+  double s = jwxyz_scale (xwindow);
   cgrect.origin.x    = window_x;
   cgrect.origin.y    = window_y;
-  cgrect.size.width  = xgwa.width;
-  cgrect.size.height = xgwa.height;
+  cgrect.size.width  = xgwa.width  / s;
+  cgrect.size.height = xgwa.height / s;
 
   /* If a password is required to unlock the screen, a large black
      window will be on top of all of the desktop windows by the time
@@ -339,6 +342,7 @@ osx_grab_desktop_image (Screen *screen, Window xwindow, Drawable drawable,
                                      (NSString *)kCGWindowNumber]).intValue;
       }
     }
+    CFRelease (L);
   }
 
   // Grab a screen shot of those windows below this one