On Fri, 8 Oct 2021 10:23:13 GMT, Sergey Bylokhov <[email protected]> wrote:
> In JDK 9 the native code for the robot class was reworked to get an access to
> the HiDPI quality screenshots. So we allocate the data storage for the HiDPI
> quality and then request the best quality from the macOS.
>
> It works fine if the user request the screenshot of some area, since we
> properly scale this area. Unfortunately it does not work well if the user
> request only one pixel, in this case we allocate the array of one element and
> does not multiply the size by the scale, so if the system scale is 2 then the
> macOS returns the 2x2 pixels, which does not fit properly to the array of one
> element. This can be checked by the Xcheck:jni option which produce fatal
> error in this case.
>
> Solution is to allocate the storage of the proper size 1 * scale * 1 * scale
Why doesn't this need updating too ? Seems like it must be OK else we'd have
massive over-runs ..
@Override
public int [] getRGBPixels(final Rectangle bounds) {
int[] c = new int[bounds.width * bounds.height];
getScreenPixels(bounds, c);
return c;
}
-------------
PR: https://git.openjdk.java.net/jdk/pull/5864