> On 25-Mar-2020, at 5:22 AM, Sergey Bylokhov <sergey.bylok...@oracle.com> > wrote: > > On 3/23/20 10:04 pm, Prasanta Sadhukhan wrote: >> On 24-Mar-20 10:17 AM, Sergey Bylokhov wrote: >>> On 3/23/20 9:36 pm, Prasanta Sadhukhan wrote: >>>> I did not get this point. "apple.awt.brushMetalLook" and "window.style" >>>> both set TEXTURED property of NSWindow so it's gradient should be the >>>> same, no? >>>> >>>> So, at what time do you think they will not be same? >>> >>> It seems every time the window becomes visible the background gradient >>> draws slightly differently(it is drawn by the macOS, not java). It fails >>> even if the "apple.awt.brushMetalLook" used twice. >>> >> There's a 2 sec gap between window being visible and image is captured by >> robot, so if it is momentary macos draw problem, it should not have been >> there as we wait long enough after the window is visible. If it's permanent >> macos draw problem, then do we need to file a bug to apple? > > I am not sure this is a bug, it looks like the gradient is generated on the > fly, > and it is different every time. But it will be helpful to compare the diff > pixel by pixel. > > It seems there is a difference of 1 in all the color components x 0 y 1 img1.getRGB(x,y) ff9e9e9e img2.getRGB(x,y) ff9f9f9f x 0 y 2 img1.getRGB(x,y) ffa2a2a2 img2.getRGB(x,y) ffa1a1a1 x 1 y 0 img1.getRGB(x,y) fff8f8f8 img2.getRGB(x,y) fff7f7f7 x 1 y 1 img1.getRGB(x,y) ff9d9d9d img2.getRGB(x,y) ff9e9e9e x 2 y 0 img1.getRGB(x,y) fff7f7f7 img2.getRGB(x,y) fff6f6f6 x 2 y 1 img1.getRGB(x,y) ff9d9d9d img2.getRGB(x,y) ff9e9e9e x 2 y 3 img1.getRGB(x,y) ffdadada img2.getRGB(x,y) ffd9d9d9 x 3 y 0 img1.getRGB(x,y) fff5f5f5 img2.getRGB(x,y) fff6f6f6 x 3 y 3 img1.getRGB(x,y) ffd9d9d9 img2.getRGB(x,y) ffdadada x 4 y 2 img1.getRGB(x,y) ffa1a1a1 img2.getRGB(x,y) ff9f9f9f x 5 y 0 img1.getRGB(x,y) fff4f4f4 img2.getRGB(x,y) fff3f3f3 ……. …...
so I added a tolerance check for each color. The test now passes in osx10.14 and without the fix of 7124513, the test fails. diff -r 20374b37dd01 test/jdk/javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java --- a/test/jdk/javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java Thu Mar 19 22:22:39 2020 -0700 +++ b/test/jdk/javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java Wed Mar 25 19:36:05 2020 +0530 @@ -23,6 +23,7 @@ import java.awt.Rectangle; import java.awt.Toolkit; +import java.awt.Color; import java.awt.image.BufferedImage; import javax.swing.JFrame; @@ -78,9 +79,16 @@ private static void testImages(BufferedImage img1, BufferedImage img2, boolean shouldbeDifferent) { boolean different = false; + int tol = 5; for (int x = 0; x < img1.getWidth(); ++x) { for (int y = 0; y < img1.getHeight(); ++y) { - if (img1.getRGB(x, y) != img2.getRGB(x, y)) { + Color c1 = new Color(img1.getRGB(x, y)); + Color c2 = new Color(img2.getRGB(x, y)); + + if ((Math.abs(c1.getRed() - c2.getRed()) > tol) && + (Math.abs(c1.getBlue() - c2.getBlue()) > tol) && + (Math.abs(c1.getGreen() - c2.getGreen()) > tol )) { + different = true; } > -- > Best regards, Sergey.