From Sergey.Bylokhov at oracle.com Wed Jul 1 00:05:50 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Tue, 30 Jun 2020 17:05:50 -0700 Subject: RFR: 8212226 SurfaceManager throws "Invalid Image variant" for MultiResolutionImage (Windows) In-Reply-To: References: Message-ID: <6f2a9c6b-5b3a-d83b-f368-ebd4bd9bfeb1@oracle.com> On 6/29/20 7:37 am, Alexander Zuev wrote: >>> It also means that if a non-primary variant will never be loaded, we still should be able to draw the default variant. > Well - in certain cases the primary variant is not being loaded too which causes the same exception - > what should we do then? There's literally nothing to show in this case. Right, in this case, we will return "false" since the image and its scaled version are nor ready/loaded yet, but we need to check that the observer passed to the method will be called when the image will be loaded. On the other hand > later in the same method when we are scaling the image for custom scaling factor we are checking > if the imagepipe is ready and if not - we do return false knowing that this method will be called again later > and we will be able to paint image correctly. > And i think it is the correct way of handling such situation. I can in case of image not being ready try to get the > base image from MRI - and only when IT is not ready to return fail. But returning fail indicating we haven't > drawn an updated image is a way to go. The boolean flag in this message does not necessarily mean error during image loading, we may try to draw the image, but it could not fully be completed and the observer will be called later. The reasons could be: - The image loading is in progress, and we draw only the part of the image - Only low-quality image is drawn, so we need to redraw good quality image later But from the other side, we may load the low-quality image on the HiDPI environment while it is not strictly necessary. I have no personal preferences for this, so the current fix looks fine, but please check that the observer really will be called later if the MRI resolution variant is not ready yet. -- Best regards, Sergey. From suman.rajkumaar.kodandarama at oracle.com Tue Jul 7 14:49:49 2020 From: suman.rajkumaar.kodandarama at oracle.com (Suman Rajkumaar Kodandarama) Date: Tue, 7 Jul 2020 20:19:49 +0530 Subject: RFR [16] 8246248: TransferHandler.exportToClipboard prints stacktrace even if succeeded In-Reply-To: References: Message-ID: <70211364-2a4c-5e2e-0d28-3e285ce7b423@oracle.com> Hello All, Could you review a fix for the JDK 16, please? Bug: https://bugs.openjdk.java.net/browse/JDK-8246248 webrev: http://cr.openjdk.java.net/~dmarkov/suman/8246248/webrev.00/ Problem description:When copying an image with alpha component to the clipboard, IOException occurs and its stack trace is printed to the console. The IOException is thrown because JPEG flavor does not support alpha, which it has been dropped in JDK-8204187. Fix: Instead of printing the exception on the standard console, the fix replaces printing the stack trace of any exception that may occur while placing data to the clipboard with logging. Best Regards, K Suman Rajkumaar -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexey.ivanov at oracle.com Wed Jul 8 23:21:27 2020 From: alexey.ivanov at oracle.com (Alexey Ivanov) Date: Thu, 9 Jul 2020 00:21:27 +0100 Subject: RFR: 8182043 Access to Windows Large Icons In-Reply-To: References: <6eb1f0f8-f347-0048-c531-1ef07ae3f2a9@oracle.com> <34c75ffd-08b4-5ee3-3308-2953e272f20a@oracle.com> <780f8a0c-0d65-643d-e7c6-862f0569d927@oracle.com> <1704723d-0982-e8bc-162f-32e5cd9953bb@oracle.com> <5EEA59FC.10805@oracle.com> <42309722-7820-6e47-0156-17bf03d4587f@oracle.com> <2f6c8f20-766c-39fa-d749-a022794cbcea@oracle.com> <51783cd5-d2ec-0d30-30f5-3ce8d2c7a696@oracle.com> Message-ID: <6958ab9d-b4b2-8012-9287-8abdcf19769c@oracle.com> Hi Alexander, Sorry for my belated review. *FileSystemView.java* I couldn't build JDK because of the warning about empty

in javadoc for getSystemIcon(File f, int size).

is not needed before

. Yet 

should be added after each empty line in the javadoc to start a new paragraph, otherwise all the text is presented one long description. 276???? * @param size width and height of the icon in pixels to be scaled 277???? *???????????? (valid range: 1 to 256) I'd drop "to be scaled"; width and height are the base size of the icon for the case. *ShellFolder.java* 205????? * @param size size of the icon > 0(Valid range: 1 to 256) I recommend adding space before the opening parenthesis and use lower-case in the parentheses as in FileSystemView.java. *Win32ShellFolder2.java* 80???? private final static int[] ICON_RESOLUTIONS 81???????????? = {8, 16, 24, 32, 48, 64, 72, 96, 128, 256}; Shall we drop 8 from the list? The size of 8?8 is non-standard for Windows, is it provided by any Windows Shell interfaces? *Win32ShellFolder2.java* The trickery with newIcon2 in getIcon(final boolean getLargeIcon) is for getting both 16?16 and 32?32 and returning them as MultiResolutionImage, isn't it? I guess the best results would be if we get a list of 16?16, 24?24, and 32?32 icons when small icon is requested, and 32?32, 48?48, and 64?64 when large icon is requested, which would cover scaling factors of 100%, 150%, and 200%. I don't think we'll ever need small icon when large one is requested, and if I read the code correctly this is what would happen). However, JFileChooser does not seem to allow for large icons in its file view, thus adding the larger icon makes the rendering crispier in High DPI environments. 1154???????????????? if (size > 512 || size < 4) { 1155???????????????????? return newIcon; 1156???????????????? } I can understand that there are no useful resolutions if size of 512 or larger is requested. Should it be 256 or rather ICON_RESOLUTIONS[ICON_RESOLUTIONS.length - 1]? Javadoc states the valid range ends at 256. As for the minimum size? In my opinion, icon size less than 8 is not viable; on the other hand we can't make any assumptions. So if the requested size is less than 4, then we'll return only 8?8 icon (or 16?16, if 8 is dropped from the list). Do I get it right? *ShellFolder2.cpp* 981???????????? hres = pIcon->Extract(szBuf, index, &hIcon, &hIconLow, (16 << 16) + size); 982???????????? if (size < 24) { I wonder why you extract two icons, you never use both. This adds a delay: only one of the extracted icons is ever used. If the idea is to limit the size by 16, then min(16, size) passed as the icon size would do the trick. With this new version, I noticed that JFileChooser takes longer to appear and then longer to populate the file list. I'm still playing around with the build but I wanted to provide my feedback. Regards, Alexey On 29/06/2020 15:27, Alexander Zuev wrote: > Alexey, Sergey, > > ? here's the latest version of the fix: > > http://cr.openjdk.java.net/~kizune/8182043/webrev.02/ > > It adds one more native method - hiResIconAvailable > that queries if system will be able to provide high resolution icons > for a given file. > Now i have tested three approaches with the FileManager: > The old one - at magnification 150% can be seen here: > http://cr.openjdk.java.net/~kizune/8182043/example/fchooser_old_150.PNG > I changed the behavior by making the icon loaded by the FileChooser a > MultiResolutionIcon > carrying both small and large icons at the same time. > The result looks much better - here's the same view with the > intermediate fix: > http://cr.openjdk.java.net/~kizune/8182043/example/fchooser_inter_150.PNG > But then i added the new native method and in FileChooser i'm getting > the multiResolutionIcon > for all the files for which it is possible. The result looks much > crisper: > http://cr.openjdk.java.net/~kizune/8182043/example/fchooser_new_150.PNG > But there's one catch: new way of retrieving icons does not get the > custom drive > icon (can be seen at disk C: - the windows logo identifying the > windows system drive > is no longer present). I am questioning myself, what is better: to > have better icon quality > and missing custom disk logo or to have custom disk logo and mediocre > icon quality? > > /Alex > > > On 22-Jun-20 11:27, Alexander Zuev wrote: >> Hi Alexey, >> >> ? sorry for late responce, after fixing that initial error with the >> wrong >> icon sizes pulled i found a lot of corner cases that needed some >> additional digging. >> >> On 18-Jun-20 20:56, Alexey Ivanov wrote: >>> On 18/06/2020 02:30, Sergey Bylokhov wrote: >>>> On 6/17/20 5:50 pm, Sergey Bylokhov wrote: >>>> >>>>> I guess it is too early to compare behavior before and after the >>>>> fix since the fix has a few bugs. >>>>> ??- It does not fetch several sizes, as it was expected from the >>>>> code, but load only one native size >>>>> and map it to the different resolutions. >>> >>> Yes, I re-read your message and found this mistake. >>> I fixed it locally. >>> >>> Then I noticed JFileChooser does not really use the new method which >>> returns MRI, so this explains why JFileChooser never adjusts the >>> icons according the screen DPI. >>> >>> I modified Win32ShellFolder2.getIcon(boolean) to use getIcon(size) >>> instead of getIcon(getAbsolutePath(), getLargeIcon), and now the >>> file icons are updated when JFileChooser window is moved from >>> standard DPI monitor to a High DPI one (150%) and back. I noticed >>> one artefact though: the customised icons from disk drives >>> disappeared, some file icons look clipped, on either monitor. >> I also noticed this behavior, some icons retrieved with the >> extractIcon method got clipped or improperly scaled. >> I tried to dig deeper and found that it happens when >> pIcon->GetIconLocation function returns "*" >> as location of the resource file. I haven't found exact reason for >> that but when this is the case then >> getIconBits function always retrieves 32x32 icon no matter what icon >> size we requested. >> We then scale it down to 16x16 and the result is unpleasant. >> I'm trying to find another way of retrieving the custom icon but for >> now i would say that >> for the small icons the approach of getIcon function which uses >> SHGetFileInfo holds better results. >> >> So far the approach that seems to be working is to check if we have a >> high resolution >> icon available by requesting icon location. If icon location is not >> known we can get both >> low and high resolution icons from SHGetFileInfo and store them in >> the MRI. If high res icon available >> then fetch all the standard resolution icons and also return them as >> MRI. >> >> /Alex > From Sergey.Bylokhov at oracle.com Thu Jul 9 09:41:53 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Thu, 9 Jul 2020 02:41:53 -0700 Subject: RFR [16] 8246248: TransferHandler.exportToClipboard prints stacktrace even if succeeded In-Reply-To: <70211364-2a4c-5e2e-0d28-3e285ce7b423@oracle.com> References: <70211364-2a4c-5e2e-0d28-3e285ce7b423@oracle.com> Message-ID: <47f3e72c-f33b-34c1-37b4-f0d62e5b02c5@oracle.com> Hi, Suman. Is it possible to write a test case which triggers this exception and also check that after the fix the clipboard copy operation still works with/without alpha component. On 07.07.2020 07:49, Suman Rajkumaar Kodandarama wrote: > Hello All, > > Could you review a fix for the JDK 16, please? > > Bug: https://bugs.openjdk.java.net/browse/JDK-8246248 > > webrev: http://cr.openjdk.java.net/~dmarkov/suman/8246248/webrev.00/ > > Problem description:When copying an image with alpha component to the clipboard, IOException occurs and its stack trace is printed to the console. The IOException is thrown because JPEG flavor does not support alpha, which it has been dropped in JDK-8204187. > > Fix: Instead of printing the exception on the standard console, the fix replaces printing the stack trace of any exception that may occur while placing data to the clipboard with logging. > > Best Regards, > K Suman Rajkumaar -- Best regards, Sergey. From suenaga at oss.nttdata.com Sat Jul 11 04:15:25 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Sat, 11 Jul 2020 13:15:25 +0900 Subject: 8236161: AWT Simple Example not Work Message-ID: <7255d516-d37d-0a50-1471-10ecc4a34266@oss.nttdata.com> Hi all, I encountered JVM crash on Windows when I run Sample.java on JDK-8236161 with -Dfile.encoding=UTF-8. I investigated it, then I found out current implementation cannot handle default charset. If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. I created a patch as following, and it works fine on my Windows 10 box. I want to fix this issue with it, but JDK-8236161 is closed as duplicate of JDK-8229126 (I cannot see it). http://cr.openjdk.java.net/~ysuenaga/JDK-8236161/webrev/ Anyone works for this issue? Should I file it as new bug? Thanks, Yasumasa From Sergey.Bylokhov at oracle.com Sat Jul 11 06:20:15 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Fri, 10 Jul 2020 23:20:15 -0700 Subject: 8236161: AWT Simple Example not Work In-Reply-To: <7255d516-d37d-0a50-1471-10ecc4a34266@oss.nttdata.com> References: <7255d516-d37d-0a50-1471-10ecc4a34266@oss.nttdata.com> Message-ID: Hi, Yasumasa. On 10.07.2020 21:15, Yasumasa Suenaga wrote: > I created a patch as following, and it works fine on my Windows 10 box. I want to fix this issue with it, but JDK-8236161 is closed as duplicate of JDK-8229126 (I cannot see it). > Anyone works for this issue? Should I file it as new bug? I suggest to open another bug which could be fixed by you, I'll close the JDK-8229126 as a duplicate of the new bug. BTW this is 2d area, please send a review request to the 2d-dev. -- Best regards, Sergey. From suenaga at oss.nttdata.com Sat Jul 11 08:40:25 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Sat, 11 Jul 2020 17:40:25 +0900 Subject: 8236161: AWT Simple Example not Work In-Reply-To: References: <7255d516-d37d-0a50-1471-10ecc4a34266@oss.nttdata.com> Message-ID: Hi Sergey, Thanks for your advice! I filed this to JBS (JDK-8249215), and I've sent review request to 2d-dev. https://mail.openjdk.java.net/pipermail/2d-dev/2020-July/010866.html Thanks, Yasumasa On 2020/07/11 15:20, Sergey Bylokhov wrote: > Hi, Yasumasa. > > On 10.07.2020 21:15, Yasumasa Suenaga wrote: >> I created a patch as following, and it works fine on my Windows 10 box. I want to fix this issue with it, but JDK-8236161 is closed as duplicate of JDK-8229126 (I cannot see it). >> Anyone works for this issue? Should I file it as new bug? > > I suggest to open another bug which could be fixed by you, > I'll close the JDK-8229126 as a duplicate of the new bug. > > BTW this is 2d area, please send a review request to the 2d-dev. > > From suman.rajkumaar.kodandarama at oracle.com Tue Jul 14 07:01:31 2020 From: suman.rajkumaar.kodandarama at oracle.com (Suman Rajkumaar Kodandarama) Date: Tue, 14 Jul 2020 12:31:31 +0530 Subject: RFR [16] 8246248: TransferHandler.exportToClipboard prints stacktrace even if succeeded In-Reply-To: <47f3e72c-f33b-34c1-37b4-f0d62e5b02c5@oracle.com> References: <70211364-2a4c-5e2e-0d28-3e285ce7b423@oracle.com> <47f3e72c-f33b-34c1-37b4-f0d62e5b02c5@oracle.com> Message-ID: Dear Sergey, Hope you are doing fine. Sorry, for the delayed reply. Firstly, as the issue was observed with JPEG flavor with alpha component, I have tested with regular JPEG image (without alpha) and the image was copied onto the clipboard and no exception was thrown as expected. Secondly, tested with JPEG flavor with alpha, there was no JPEG flavor copied onto the clipboard as the support was removed/dropped and the IOException is thrown as expected and is logged into the logger (seen after enabling the logging). Please find the attached file for reference. Please search for the log message "WARNING: Registered service providers failed to encode". Also, there are datatransfer tests available which was run and there were no new failures observed. This fix doesn't change any of the functionalities rather, cleans up the code and logs the exception to the logger instead of printing the same on the console. Best Regards, K Suman Rajkumaar On 09/07/2020 15:11, Sergey Bylokhov wrote: > Hi, Suman. > > Is it possible to write a test case which triggers this exception and > also check that > after the fix the clipboard copy operation still works with/without > alpha component. > > > On 07.07.2020 07:49, Suman Rajkumaar Kodandarama wrote: >> Hello All, >> >> Could you review a fix for the JDK 16, please? >> >> Bug: https://bugs.openjdk.java.net/browse/JDK-8246248 >> >> webrev: http://cr.openjdk.java.net/~dmarkov/suman/8246248/webrev.00/ >> >> Problem description:When copying an image with alpha component to the >> clipboard, IOException occurs and its stack trace is printed to the >> console. The IOException is thrown because JPEG flavor does not >> support alpha, which it has been dropped in JDK-8204187. >> >> Fix: Instead of printing the exception on the standard console, the >> fix replaces printing the stack trace of any exception that may occur >> while placing data to the clipboard with logging. >> >> Best Regards, >> K Suman Rajkumaar > > -------------- next part -------------- Microsoft Windows [Version 10.0.18363.900] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\Suman>cd ../../Java The system cannot find the path specified. C:\Users\Suman>cd ../.. C:\>dir Volume in drive C has no label. Volume Serial Number is 94B4-966F Directory of C:\ 30/01/2018 20:55

AMD 16/06/2020 19:52 cygwin64 26/03/2020 08:24 ESD 17/06/2020 10:06 Intel 13/05/2020 22:22 PerfLogs 18/06/2020 13:05 Program Files 02/07/2020 10:10 Program Files (x86) 15/06/2020 13:06 Quarantine 26/03/2020 09:14 Users 12/06/2020 20:00 Windows 0 File(s) 0 bytes 10 Dir(s) 41,615,204,352 bytes free C:\>cd "Program Files" C:\Program Files>cd Java/ C:\Program Files\Java>cd bi The system cannot find the path specified. C:\Program Files\Java>cd jdk-15/bin C:\Program Files\Java\jdk-15\bin> C:\Program Files\Java\jdk-15\bin> C:\Program Files\Java\jdk-15\bin> C:\Program Files\Java\jdk-15\bin> C:\Program Files\Java\jdk-15\bin> C:\Program Files\Java\jdk-15\bin> C:\Program Files\Java\jdk-15\bin>d: D:\>cd Oracle D:\Oracle>cd My_Tasks D:\Oracle\My_Tasks>cd Bug-JDK-8246248 D:\Oracle\My_Tasks\Bug-JDK-8246248>dir Volume in drive D has no label. Volume Serial Number is F4B9-91C9 Directory of D:\Oracle\My_Tasks\Bug-JDK-8246248 03/07/2020 11:06 . 03/07/2020 11:06 .. 02/07/2020 18:01 2,020 Bug-JDK8246248-DataTransfererExceptionLogging.diff 24/06/2020 12:25 1,194 BugJDK8246248Fix.diff 15/06/2020 14:36 119,854 cropped-java-craftsman-duke.png 18/06/2020 12:24 919,183 cropped-java-craftsman-duke__.png 03/07/2020 13:51 1,103 ImageClipboardExample$1$1.class 03/07/2020 13:51 768 ImageClipboardExample$1.class 03/07/2020 13:51 2,799 ImageClipboardExample.class 15/06/2020 13:32 2,030 ImageClipboardExample.java 8 File(s) 1,048,951 bytes 2 Dir(s) 193,110,749,184 bytes free D:\Oracle\My_Tasks\Bug-JDK-8246248>c:\progra~1\java\jdk-15\bin\java -Djava.util.logging.config.file=c:\progra~1\java\jdk-15\conf\logging.properties ImageClipboardExample Jul 03, 2020 1:59:39 PM sun.awt.windows.WToolkit FINE: Win version: 0x47bb000a = 1203437578 (Windows Vista) Jul 03, 2020 1:59:40 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.Win32GraphicsConfig at 3d8c7aca[dev=Win32GraphicsDevice[screen=0],pixfmt=0] Jul 03, 2020 1:59:40 PM java.awt.Window setGraphicsConfiguration FINER: + Window.setGraphicsConfiguration(): new GC is + sun.awt.Win32GraphicsConfig at 3d8c7aca[dev=Win32GraphicsDevice[screen=0],pixfmt=0] + this is javax.swing.JFrame[frame0,0,0,0x0,invalid,hidden,normal,defaultCloseOperation=DO_NOTHING_ON_CLOSE,rootPane=,rootPaneCheckingEnabled=false] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.properties.version=3 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.frame.captionFont=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.frame.captionFont.height=12 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.captionHeight=22 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.captionButtonWidth=36 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.captionButtonHeight=22 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.frame.smallCaptionFont=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.frame.smallCaptionFont.height=12 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.smallCaptionHeight=22 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.smallCaptionButtonWidth=22 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.smallCaptionButtonHeight=22 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.sizingBorderWidth=1 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.menu.font=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.menu.font.height=12 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.menu.height=19 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.menu.buttonWidth=19 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.scrollbar.width=17 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.scrollbar.height=17 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.status.font=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.status.font.height=12 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.tooltip.font=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.tooltip.font.height=12 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.messagebox.font=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.messagebox.font.height=12 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.icon.hspacing=75 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.icon.vspacing=75 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.icon.titleWrappingOn=true Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.icon.font=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.icon.font.height=12 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.activeCaptionGradientColor=java.awt.Color[r=185,g=209,b=234] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.inactiveCaptionGradientColor=java.awt.Color[r=215,g=228,b=242] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.item.hotTrackedColor=java.awt.Color[r=0,g=102,b=204] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.3d.darkShadowColor=java.awt.Color[r=105,g=105,b=105] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.3d.backgroundColor=java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.3d.highlightColor=java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.3d.lightColor=java.awt.Color[r=227,g=227,b=227] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.3d.shadowColor=java.awt.Color[r=160,g=160,b=160] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.button.textColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.desktop.backgroundColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.activeCaptionColor=java.awt.Color[r=153,g=180,b=209] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.activeBorderColor=java.awt.Color[r=180,g=180,b=180] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.color=java.awt.Color[r=100,g=100,b=100] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.backgroundColor=java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.captionTextColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.inactiveBorderColor=java.awt.Color[r=244,g=247,b=252] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.inactiveCaptionColor=java.awt.Color[r=191,g=205,b=219] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.inactiveCaptionTextColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.textColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.item.highlightColor=java.awt.Color[r=0,g=120,b=215] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.item.highlightTextColor=java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.mdi.backgroundColor=java.awt.Color[r=171,g=171,b=171] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.menu.backgroundColor=java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.menu.textColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.menubar.backgroundColor=java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.scrollbar.backgroundColor=java.awt.Color[r=200,g=200,b=200] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.text.grayedTextColor=java.awt.Color[r=109,g=109,b=109] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.tooltip.backgroundColor=java.awt.Color[r=255,g=255,b=225] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.tooltip.textColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.caret.width=1 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.frame.fullWindowDragsOn=true Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.text.fontSmoothingOn=true Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.text.fontSmoothingType=2 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.text.fontSmoothingContrast=1200 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.text.fontSmoothingOrientation=1 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.drag.width=4 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.drag.height=4 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: DnD.gestureMotionThreshold=2 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: awt.mouse.numButtons=5 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: awt.multiClickInterval=500 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: awt.dynamicLayoutSupported=true Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: awt.wheelMousePresent=true Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.frame.captionGradientsOn=true Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.item.hotTrackingOn=true Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.menu.keyboardCuesOn=false Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.highContrast.on=false Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: awt.file.showHiddenFiles=false Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: awt.file.showAttribCol=false Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.default=WinPlaySound(.Default) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.close=WinPlaySound(Close) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.maximize=WinPlaySound(Maximize) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.minimize=WinPlaySound(Minimize) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.menuCommand=WinPlaySound(MenuCommand) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.menuPopup=WinPlaySound(MenuPopup) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.open=WinPlaySound(Open) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.restoreDown=WinPlaySound(RestoreDown) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.restoreUp=WinPlaySound(RestoreUp) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.asterisk=WinPlaySound(SystemAsterisk) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.exclamation=WinPlaySound(SystemExclamation) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.exit=WinPlaySound(SystemExit) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.hand=WinPlaySound(SystemHand) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.question=WinPlaySound(SystemQuestion) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.start=WinPlaySound(SystemStart) Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.ansiFixed.font=java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.ansiFixed.font.height=13 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.ansiVar.font=java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.ansiVar.font.height=11 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.deviceDefault.font=java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.deviceDefault.font.height=16 Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.defaultGUI.font=java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=11] Jul 03, 2020 1:59:40 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.defaultGUI.font.height=11 Jul 03, 2020 1:59:45 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.oemFixed.font=java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18] Jul 03, 2020 1:59:45 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.oemFixed.font.height=18 Jul 03, 2020 1:59:45 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.system.font=java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16] Jul 03, 2020 1:59:45 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.system.font.height=16 Jul 03, 2020 1:59:45 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.systemFixed.font=java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18] Jul 03, 2020 1:59:45 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.systemFixed.font.height=18 Jul 03, 2020 1:59:45 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.xpstyle.themeActive=true Jul 03, 2020 1:59:45 PM sun.awt.windows.WDesktopProperties setStringProperty FINE: win.xpstyle.dllName=C:\WINDOWS\resources\themes\Aero\Aero.msstyles Jul 03, 2020 1:59:45 PM sun.awt.windows.WDesktopProperties setStringProperty FINE: win.xpstyle.sizeName=NormalSize Jul 03, 2020 1:59:45 PM sun.awt.windows.WDesktopProperties setStringProperty FINE: win.xpstyle.colorName=NormalColor Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.systemFixed.font to java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.inactiveBorderColor to java.awt.Color[r=244,g=247,b=252] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionGradientsOn to true Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.messagebox.font to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.smallCaptionButtonHeight to 22 Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.inactiveCaptionGradientColor to java.awt.Color[r=215,g=228,b=242] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.ansiFixed.font to java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.xpstyle.themeActive to true Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.xpstyle.dllName to C:\WINDOWS\resources\themes\Aero\Aero.msstyles Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.3d.highlightColor to java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.smallCaptionFont to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.dynamicLayoutSupported to true Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionFont.height to 12 Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.button.textColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.asterisk to WinPlaySound(SystemAsterisk) Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.restoreUp to WinPlaySound(RestoreUp) Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.sizingBorderWidth to 1 Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.smallCaptionHeight to 22 Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.open to WinPlaySound(Open) Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.drag.width to 4 Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.item.highlightColor to java.awt.Color[r=0,g=120,b=215] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.inactiveCaptionColor to java.awt.Color[r=191,g=205,b=219] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionButtonWidth to 36 Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.activeCaptionColor to java.awt.Color[r=153,g=180,b=209] Jul 03, 2020 1:59:45 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.wheelMousePresent to true Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.maximize to WinPlaySound(Maximize) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed DnD.gestureMotionThreshold to 2 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.mdi.backgroundColor to java.awt.Color[r=171,g=171,b=171] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.menuCommand to WinPlaySound(MenuCommand) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menubar.backgroundColor to java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.drag.height to 4 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.oemFixed.font.height to 18 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.scrollbar.height to 17 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.color to java.awt.Color[r=100,g=100,b=100] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.scrollbar.width to 17 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.textColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.3d.lightColor to java.awt.Color[r=227,g=227,b=227] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.hand to WinPlaySound(SystemHand) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.properties.version to 3 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.deviceDefault.font.height to 16 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.system.font to java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.icon.vspacing to 75 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.3d.darkShadowColor to java.awt.Color[r=105,g=105,b=105] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.font to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.start to WinPlaySound(SystemStart) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.xpstyle.sizeName to NormalSize Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.smallCaptionFont.height to 12 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.activeCaptionGradientColor to java.awt.Color[r=185,g=209,b=234] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.exclamation to WinPlaySound(SystemExclamation) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.item.hotTrackedColor to java.awt.Color[r=0,g=102,b=204] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.scrollbar.backgroundColor to java.awt.Color[r=200,g=200,b=200] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.defaultGUI.font.height to 11 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.backgroundColor to java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.text.fontSmoothingType to 2 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.tooltip.font to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.font.height to 12 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.keyboardCuesOn to false Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.ansiVar.font to java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.3d.shadowColor to java.awt.Color[r=160,g=160,b=160] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.font.desktophints to {Text-specific LCD contrast key=120, Text-specific antialiasing enable key=LCD HRGB antialiasing text mode} Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.file.showHiddenFiles to false Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.ansiFixed.font.height to 13 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed DnD.Autoscroll.cursorHysteresis to null Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.tooltip.textColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.ansiVar.font.height to 11 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.fullWindowDragsOn to true Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.minimize to WinPlaySound(Minimize) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.restoreDown to WinPlaySound(RestoreDown) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.close to WinPlaySound(Close) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.status.font.height to 12 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.3d.backgroundColor to java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.smallCaptionButtonWidth to 22 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.icon.font to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.buttonWidth to 19 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.deviceDefault.font to java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.text.fontSmoothingOn to true Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.oemFixed.font to java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.menuPopup to WinPlaySound(MenuPopup) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.system.font.height to 16 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionButtonHeight to 22 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionFont to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.xpstyle.colorName to NormalColor Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.inactiveCaptionTextColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.highContrast.on to false Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.activeBorderColor to java.awt.Color[r=180,g=180,b=180] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.item.hotTrackingOn to true Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.question to WinPlaySound(SystemQuestion) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.exit to WinPlaySound(SystemExit) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.propNames to [Ljava.lang.String;@b3d7190 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.text.fontSmoothingContrast to 1200 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.icon.titleWrappingOn to true Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.file.showAttribCol to false Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.backgroundColor to java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.tooltip.font.height to 12 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionHeight to 22 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.defaultGUI.font to java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=11] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.systemFixed.font.height to 18 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.caret.width to 1 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.text.fontSmoothingOrientation to 1 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.icon.font.height to 12 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.text.grayedTextColor to java.awt.Color[r=109,g=109,b=109] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.textColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.mouse.numButtons to 5 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.tooltip.backgroundColor to java.awt.Color[r=255,g=255,b=225] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.status.font to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.multiClickInterval to 500 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.height to 19 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.messagebox.font.height to 12 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionTextColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.icon.hspacing to 75 Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.default to WinPlaySound(.Default) Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.item.highlightTextColor to java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 1:59:46 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.desktop.backgroundColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: javax.swing.RepaintManager$DisplayChangedHandler at 6a79c292 Jul 03, 2020 1:59:46 PM java.awt.Container mixOnHiding FINE: this = javax.swing.JPanel[null.glassPane,0,0,0x0,invalid,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]; isLightweight=false Jul 03, 2020 1:59:46 PM java.awt.Component mixOnHiding FINE: this = javax.swing.JPanel[null.glassPane,0,0,0x0,invalid,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]; isLightweight = false Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JPanel[null.glassPane,0,0,0x0,invalid,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]; containing window is null Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JPanel[null.glassPane,0,0,0x0,invalid,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=]; containing window is null Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread addEventFilter FINEST: adding the event filter: java.awt.EventDispatchThread$HierarchyEventFilter at 340107c3 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.windows.WFramePeer[javax.swing.JFrame[frame0,0,0,132x37,invalid,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]] Jul 03, 2020 1:59:46 PM java.awt.Container mixOnShowing FINE: this = javax.swing.JFrame[frame0,0,0,132x37,invalid,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764986238] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: containing window = javax.swing.JFrame[frame0,0,0,132x37,invalid,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]; has h/w descendants = false; has l/w descendants = false; disposing = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnShowing FINE: this = javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnShowing FINE: this = javax.swing.JPanel[null.glassPane,0,0,0x0,invalid,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JPanel[null.glassPane,0,0,0x0,invalid,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnShowing FINE: this = javax.swing.JLayeredPane[null.layeredPane,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,optimizedDrawingPossible=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JLayeredPane[null.layeredPane,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,optimizedDrawingPossible=true]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnShowing FINE: this = javax.swing.JPanel[null.contentPane,0,0,0x0,invalid,layout=javax.swing.JRootPane$1,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: containing window = javax.swing.JFrame[frame0,0,0,132x37,invalid,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,0,0,0x0,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]; has h/w descendants = false; has l/w descendants = true; disposing = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnShowing FINE: this = ImageClipboardExample[,0,0,0x0,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = ImageClipboardExample[,0,0,0x0,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnShowing FINE: this = javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=javax.swing.ImageIcon at 197d671,disabledIcon=,horizontalAlignment=CENTER,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=javax.swing.ImageIcon at 197d671,disabledIcon=,horizontalAlignment=CENTER,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnShowing FINE: this = javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JButton[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnReshaping FINE: this = javax.swing.JRootPane[,7,30,512x538,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JRootPane[,7,30,512x538,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnReshaping FINE: this = javax.swing.JLayeredPane[null.layeredPane,0,0,512x538,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,optimizedDrawingPossible=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JLayeredPane[null.layeredPane,0,0,512x538,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,optimizedDrawingPossible=true]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnReshaping FINE: this = javax.swing.JPanel[null.glassPane,0,0,512x538,invalid,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.ComponentEvent[COMPONENT_RESIZED (0,0 526x575)] on frame0 Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JPanel[null.glassPane,0,0,512x538,invalid,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnReshaping FINE: this = javax.swing.JPanel[null.contentPane,0,0,512x538,invalid,layout=javax.swing.JRootPane$1,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: containing window = javax.swing.JFrame[frame0,0,0,526x575,invalid,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]; has h/w descendants = false; has l/w descendants = true; disposing = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnValidating FINE: this = javax.swing.JPanel[null.glassPane,0,0,512x538,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JPanel[null.glassPane,0,0,512x538,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnReshaping FINE: this = ImageClipboardExample[,0,0,512x538,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = ImageClipboardExample[,0,0,512x538,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnReshaping FINE: this = javax.swing.JButton[,0,0,512x0,invalid,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JButton[,0,0,512x0,invalid,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnReshaping FINE: this = javax.swing.JButton[,0,512,512x26,invalid,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JButton[,0,512,512x26,invalid,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnReshaping FINE: this = javax.swing.JLabel[,0,0,512x512,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=javax.swing.ImageIcon at 197d671,disabledIcon=,horizontalAlignment=CENTER,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JLabel[,0,0,512x512,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=javax.swing.ImageIcon at 197d671,disabledIcon=,horizontalAlignment=CENTER,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnValidating FINE: this = javax.swing.JLabel[,0,0,512x512,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=javax.swing.ImageIcon at 197d671,disabledIcon=,horizontalAlignment=CENTER,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JLabel[,0,0,512x512,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=javax.swing.ImageIcon at 197d671,disabledIcon=,horizontalAlignment=CENTER,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnValidating FINE: this = javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnValidating FINE: this = ImageClipboardExample[,0,0,512x538,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = ImageClipboardExample[,0,0,512x538,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnValidating FINE: this = javax.swing.JPanel[null.contentPane,0,0,512x538,layout=javax.swing.JRootPane$1,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: containing window = javax.swing.JFrame[frame0,0,0,526x575,invalid,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,invalid,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]; has h/w descendants = false; has l/w descendants = true; disposing = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnValidating FINE: this = javax.swing.JLayeredPane[null.layeredPane,0,0,512x538,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,optimizedDrawingPossible=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JLayeredPane[null.layeredPane,0,0,512x538,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,optimizedDrawingPossible=true]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnValidating FINE: this = javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: this = javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=]; areBoundsValid = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnValidating FINE: this = javax.swing.JFrame[frame0,0,0,526x575,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: containing window = javax.swing.JFrame[frame0,0,0,526x575,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=HIDE_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]; has h/w descendants = false; has l/w descendants = true; disposing = false Jul 03, 2020 1:59:46 PM java.awt.Container mixOnValidating FINE: this = javax.swing.JFrame[frame0,0,0,526x575,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: containing window = javax.swing.JFrame[frame0,0,0,526x575,hidden,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]; has h/w descendants = false; has l/w descendants = true; disposing = false Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.ComponentEvent[COMPONENT_RESIZED (0,0 526x575)] on frame0 Jul 03, 2020 1:59:46 PM java.awt.Container mixOnShowing FINE: this = javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: containing window = javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]; has h/w descendants = false; has l/w descendants = true; disposing = false Jul 03, 2020 1:59:46 PM sun.awt.windows.WWindowPeer updateGC FINER: Screen number: 0 Jul 03, 2020 1:59:46 PM java.awt.Window setGraphicsConfiguration FINER: + Window.setGraphicsConfiguration(): new GC is + sun.awt.Win32GraphicsConfig at 3d8c7aca[dev=Win32GraphicsDevice[screen=0],pixfmt=0] + this is javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764986384] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:46 PM sun.awt.windows.WComponentPeer coalescePaintEvent FINEST: coalescePaintEvent: PAINT: add: x = 7, y = 30, width = 511, height = 537 Jul 03, 2020 1:59:46 PM sun.awt.SunGraphicsCallback runComponents FINER: x = 7, y = 30, width = 511, height = 537 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 130ef6a0 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 4dfdf582 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at bca72e5 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 58f0d92a Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 1780e0ec Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 6f29cdd8 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 1f2ec0f3 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 7c9efdc5 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 549598a9 Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.SequencedEvent[] on frame0 Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: sun.awt.TimedWindowEvent[WINDOW_GAINED_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> sun.awt.TimedWindowEvent[WINDOW_GAINED_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: sun.awt.TimedWindowEvent[WINDOW_GAINED_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.WindowEvent[WINDOW_ACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> java.awt.event.WindowEvent[WINDOW_ACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: java.awt.event.WindowEvent[WINDOW_ACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager setGlobalActiveWindow FINER: Setting global active window to javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true], old active null Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.WindowEvent[WINDOW_ACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM javax.swing.SortingFocusTraversalPolicy getFirstComponent FINE: ### Getting first component in javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM javax.swing.SortingFocusTraversalPolicy getFirstComponent FINE: ### Cycle is [javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true], javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=], javax.swing.JLayeredPane[null.layeredPane,0,0,512x538,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,optimizedDrawingPossible=true], javax.swing.JPanel[null.contentPane,0,0,512x538,layout=javax.swing.JRootPane$1,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=], ImageClipboardExample[,0,0,512x538,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=], javax.swing.JLabel[,0,0,512x512,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=javax.swing.ImageIcon at 197d671,disabledIcon=,horizontalAlignment=CENTER,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER], javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true]] Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINER: tempLost null, toFocus javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.Component isRequestFocusAccepted FINEST: focus owner is null or this Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINER: SNFH for javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] in javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINEST: 0. Current focus owner null Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINEST: 0. Native focus owner null Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINEST: 0. Native focused window javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINEST: Request null Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager enqueueKeyEvents FINER: Enqueue at 1,593,764,978,930 for javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINEST: 5. SNFH_PROCEED for javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM sun.awt.windows.WComponentPeer requestFocus FINER: Proceeding with request to javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] in javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM sun.awt.windows.WComponentPeer requestFocus FINER: Requested window focus: true Jul 03, 2020 1:59:46 PM sun.awt.KeyboardFocusManagerPeerImpl deliverFocus FINER: Posting focus event: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.Component requestFocusHelper FINEST: Pass for javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: sun.awt.TimedWindowEvent[WINDOW_GAINED_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.ComponentEvent[COMPONENT_RESIZED (0,0 526x575)] on frame0 Jul 03, 2020 1:59:46 PM java.awt.Container mixOnValidating FINE: this = javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM java.awt.Component isMixingNeeded FINE: containing window = javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]; has h/w descendants = false; has l/w descendants = true; disposing = false Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.ComponentEvent[COMPONENT_RESIZED (0,0 526x575)] on frame0 Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.ComponentEvent[COMPONENT_MOVED (0,0 526x575)] on frame0 Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.ComponentEvent[COMPONENT_MOVED (0,0 526x575)] on frame0 Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.WindowEvent[WINDOW_OPENED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.WindowEvent[WINDOW_OPENED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> java.awt.event.WindowEvent[WINDOW_OPENED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: java.awt.event.WindowEvent[WINDOW_OPENED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764986547] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.SentEvent[] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.KeyboardFocusManager setNativeFocusOwner FINEST: Calling peer sun.awt.windows.WKeyboardFocusManagerPeer at 6b620915 setCurrentFocusOwner for javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager typeAheadAssertions FINEST: Markers before FOCUS_GAINED on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager dumpMarkers FINEST: >>> Markers dump, time: 1,593,764,986,797 Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager dumpMarkers FINEST: >>> Marker after 1593764978930 on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager typeAheadAssertions FINEST: Markers after FOCUS_GAINED Jul 03, 2020 1:59:46 PM java.awt.DefaultKeyboardFocusManager dumpMarkers FINEST: >>> Markers dump, time: 1,593,764,986,816 Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM sun.awt.im.InputContext activateInputMethod FINE: Current client component javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM sun.awt.windows.WComponentPeer handleJavaFocusEvent FINER: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764986841] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at f1c8746 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 32512a89 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 6e5985d9 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 376a8e27 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 30aa545f Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 78efa237 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 73f74cb2 Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 555ee10d Jul 03, 2020 1:59:46 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 623504ad Jul 03, 2020 1:59:46 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: sun.awt.event.IgnorePaintEvent[PAINT,updateRect=java.awt.Rectangle[x=7,y=30,width=511,height=537]] on frame0 Jul 03, 2020 1:59:46 PM java.awt.Component dispatchEventImpl FINEST: sun.awt.event.IgnorePaintEvent[PAINT,updateRect=java.awt.Rectangle[x=7,y=30,width=511,height=537]] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987735] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_ENTERED,(507,427),absolute(507,427),button=0,clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_ENTERED,(507,427),absolute(507,427),button=0,clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987737] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(485,437),absolute(485,437),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(485,437),absolute(485,437),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987749] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(464,448),absolute(464,448),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(464,448),absolute(464,448),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987758] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(443,457),absolute(443,457),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(443,457),absolute(443,457),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987765] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(425,467),absolute(425,467),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(425,467),absolute(425,467),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987772] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(402,477),absolute(402,477),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(402,477),absolute(402,477),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987780] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(385,482),absolute(385,482),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(385,482),absolute(385,482),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987787] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(375,487),absolute(375,487),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(375,487),absolute(375,487),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987795] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(363,491),absolute(363,491),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(363,491),absolute(363,491),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987802] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(356,495),absolute(356,495),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(356,495),absolute(356,495),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987810] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(348,497),absolute(348,497),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(348,497),absolute(348,497),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987817] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(341,501),absolute(341,501),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(341,501),absolute(341,501),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987825] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(336,503),absolute(336,503),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(336,503),absolute(336,503),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987833] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(331,505),absolute(331,505),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(331,505),absolute(331,505),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987840] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(329,506),absolute(329,506),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(329,506),absolute(329,506),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987848] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(325,507),absolute(325,507),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(325,507),absolute(325,507),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987855] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(323,508),absolute(323,508),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(323,508),absolute(323,508),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987863] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(321,509),absolute(321,509),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(321,509),absolute(321,509),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987870] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(317,511),absolute(317,511),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(317,511),absolute(317,511),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987878] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(315,511),absolute(315,511),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(315,511),absolute(315,511),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987885] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(313,512),absolute(313,512),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(313,512),absolute(313,512),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987893] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(310,513),absolute(310,513),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(310,513),absolute(310,513),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987900] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(308,514),absolute(308,514),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(308,514),absolute(308,514),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987908] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(306,515),absolute(306,515),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(306,515),absolute(306,515),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987915] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(303,517),absolute(303,517),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(303,517),absolute(303,517),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987923] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(302,517),absolute(302,517),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(302,517),absolute(302,517),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987931] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(301,517),absolute(301,517),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(301,517),absolute(301,517),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987938] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(299,518),absolute(299,518),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(299,518),absolute(299,518),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987946] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(299,518),absolute(299,518),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(299,518),absolute(299,518),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987953] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(298,518),absolute(298,518),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(298,518),absolute(298,518),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987961] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(297,519),absolute(297,519),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(297,519),absolute(297,519),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987968] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(296,519),absolute(296,519),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(296,519),absolute(296,519),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987977] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(293,521),absolute(293,521),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(293,521),absolute(293,521),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987984] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(288,525),absolute(288,525),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(288,525),absolute(288,525),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987991] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(283,529),absolute(283,529),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(283,529),absolute(283,529),clickCount=0] on frame0 Jul 03, 2020 1:59:47 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764987999] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(279,533),absolute(279,533),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(279,533),absolute(279,533),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988006] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(274,535),absolute(274,535),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(274,535),absolute(274,535),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988014] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(269,538),absolute(269,538),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(269,538),absolute(269,538),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988022] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(264,542),absolute(264,542),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_ENTERED,(257,0),absolute(264,542),button=0,clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(257,0),absolute(264,542),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988029] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(259,544),absolute(259,544),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(252,2),absolute(259,544),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764988030] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 4df25558 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 525751d7 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 227932f5 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 437cb3c0 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 257c2035 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 4406be98 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 4aebbd7 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 71d5c Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988037] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(251,548),absolute(251,548),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(244,6),absolute(251,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988052] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(247,551),absolute(247,551),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(240,9),absolute(247,551),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988060] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(245,551),absolute(245,551),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(238,9),absolute(245,551),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988067] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(243,552),absolute(243,552),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(236,10),absolute(243,552),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988075] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(241,553),absolute(241,553),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(234,11),absolute(241,553),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988082] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(240,553),absolute(240,553),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(233,11),absolute(240,553),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988090] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(238,555),absolute(238,555),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(231,13),absolute(238,555),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988097] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(235,555),absolute(235,555),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(228,13),absolute(235,555),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988105] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(233,556),absolute(233,556),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(226,14),absolute(233,556),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988113] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(231,557),absolute(231,557),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(224,15),absolute(231,557),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988120] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(228,559),absolute(228,559),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(221,17),absolute(228,559),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988128] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(226,559),absolute(226,559),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(219,17),absolute(226,559),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988135] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(224,561),absolute(224,561),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(217,19),absolute(224,561),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988144] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(221,561),absolute(221,561),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(214,19),absolute(221,561),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988151] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(219,562),absolute(219,562),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(212,20),absolute(219,562),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988159] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(217,563),absolute(217,563),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(210,21),absolute(217,563),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988166] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(215,563),absolute(215,563),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(208,21),absolute(215,563),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988174] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(213,564),absolute(213,564),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(206,22),absolute(213,564),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988181] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(211,565),absolute(211,565),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(204,23),absolute(211,565),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988189] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(209,566),absolute(209,566),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(202,24),absolute(209,566),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988196] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(208,566),absolute(208,566),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(201,24),absolute(208,566),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764988204] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(206,567),absolute(206,567),clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(199,25),absolute(206,567),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_EXITED,(204,568),absolute(204,568),button=0,clickCount=0] on frame0 Jul 03, 2020 1:59:48 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_EXITED,(197,26),absolute(204,568),button=0,clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:48 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764988214] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 5e75f513 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 51b7fd35 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 6d93aaec Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 6291f0d8 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 763624c8 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 18bfe978 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 482c16d8 Jul 03, 2020 1:59:48 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 74200442 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989022] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_ENTERED,(200,565),absolute(200,565),button=0,clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_ENTERED,(193,23),absolute(200,565),button=0,clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(200,565),absolute(200,565),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(193,23),absolute(200,565),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764989029] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 8218efa Jul 03, 2020 1:59:49 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 71329296 Jul 03, 2020 1:59:49 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 4b7adfe1 Jul 03, 2020 1:59:49 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at f7ffc51 Jul 03, 2020 1:59:49 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 1bb3ac23 Jul 03, 2020 1:59:49 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 6246a062 Jul 03, 2020 1:59:49 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 3d966eeb Jul 03, 2020 1:59:49 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 223fba67 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989029] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(207,561),absolute(207,561),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(200,19),absolute(207,561),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989036] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989060] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(208,560),absolute(208,560),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(201,18),absolute(208,560),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989074] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(209,560),absolute(209,560),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(202,18),absolute(209,560),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989128] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(209,560),absolute(209,560),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(202,18),absolute(209,560),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989136] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(210,559),absolute(210,559),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(203,17),absolute(210,559),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989144] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(211,559),absolute(211,559),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(204,17),absolute(211,559),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989151] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(215,557),absolute(215,557),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(208,15),absolute(215,557),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989159] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989166] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(221,555),absolute(221,555),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(214,13),absolute(221,555),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989173] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(226,555),absolute(226,555),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(219,13),absolute(226,555),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989181] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(231,553),absolute(231,553),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(224,11),absolute(231,553),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989190] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(235,552),absolute(235,552),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(228,10),absolute(235,552),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989196] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(239,550),absolute(239,550),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(232,8),absolute(239,550),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989203] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(241,549),absolute(241,549),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(234,7),absolute(241,549),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989211] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(243,549),absolute(243,549),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(236,7),absolute(243,549),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989219] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(244,549),absolute(244,549),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(237,7),absolute(244,549),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989227] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(245,548),absolute(245,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(238,6),absolute(245,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989236] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(246,548),absolute(246,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(239,6),absolute(246,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989241] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(247,548),absolute(247,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(240,6),absolute(247,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989319] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(247,548),absolute(247,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(240,6),absolute(247,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989334] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(248,548),absolute(248,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(241,6),absolute(248,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989348] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(249,548),absolute(249,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(242,6),absolute(249,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989355] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(249,548),absolute(249,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(242,6),absolute(249,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989362] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(251,548),absolute(251,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(244,6),absolute(251,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989370] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(252,548),absolute(252,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(245,6),absolute(252,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989377] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(253,548),absolute(253,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(246,6),absolute(253,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989385] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(254,548),absolute(254,548),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(247,6),absolute(254,548),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989393] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(255,549),absolute(255,549),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(248,7),absolute(255,549),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989400] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(258,549),absolute(258,549),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(251,7),absolute(258,549),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989408] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(259,549),absolute(259,549),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(252,7),absolute(259,549),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989416] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(259,549),absolute(259,549),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(252,7),absolute(259,549),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989423] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(260,551),absolute(260,551),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(253,9),absolute(260,551),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989430] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,551),absolute(261,551),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,9),absolute(261,551),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989438] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,551),absolute(261,551),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,9),absolute(261,551),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989453] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,552),absolute(261,552),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,10),absolute(261,552),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989476] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,553),absolute(261,553),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,11),absolute(261,553),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989514] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,553),absolute(261,553),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,11),absolute(261,553),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989529] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,554),absolute(261,554),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,12),absolute(261,554),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989544] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,555),absolute(261,555),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,13),absolute(261,555),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989567] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,555),absolute(261,555),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,13),absolute(261,555),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989582] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,557),absolute(261,557),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,15),absolute(261,557),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989613] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,557),absolute(261,557),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,15),absolute(261,557),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989621] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,558),absolute(261,558),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,16),absolute(261,558),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989628] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,559),absolute(261,559),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,17),absolute(261,559),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989635] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,559),absolute(261,559),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,17),absolute(261,559),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764989644] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:49 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(261,560),absolute(261,560),clickCount=0] on frame0 Jul 03, 2020 1:59:49 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(254,18),absolute(261,560),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:51 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764991045] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:51 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_PRESSED,(261,560),absolute(261,560),button=1,modifiers=Button1,extModifiers=Button1,clickCount=1] on frame0 Jul 03, 2020 1:59:51 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_PRESSED,(254,18),absolute(261,560),button=1,modifiers=Button1,extModifiers=Button1,clickCount=1] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:51 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764991097] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:51 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_RELEASED,(261,560),absolute(261,560),button=1,modifiers=Button1,clickCount=1] on frame0 Jul 03, 2020 1:59:51 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_RELEASED,(254,18),absolute(261,560),button=1,modifiers=Button1,clickCount=1] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] java.io.IOException: Registered service providers failed to encode BufferedImage at 49ea62ac: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace at 59580a86 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 512 height = 512 #numDataElements 4 dataOff[0] = 3 to image/jpeg at java.desktop/sun.awt.datatransfer.DataTransferer.imageToStandardBytesImpl(DataTransferer.java:1799) at java.desktop/sun.awt.datatransfer.DataTransferer.imageToStandardBytes(DataTransferer.java:1713) at java.desktop/sun.awt.windows.WDataTransferer.imageToPlatformBytes(WDataTransferer.java:353) at java.desktop/sun.awt.datatransfer.DataTransferer.translateTransferable(DataTransferer.java:855) at java.desktop/sun.awt.windows.WDataTransferer.translateTransferable(WDataTransferer.java:220) at java.desktop/sun.awt.windows.WClipboard.setContentsNative(WClipboard.java:83) at java.desktop/sun.awt.datatransfer.SunClipboard.setContents(SunClipboard.java:105) at java.desktop/javax.swing.TransferHandler.exportToClipboard(TransferHandler.java:787) at ImageClipboardExample.copyToClipboard(ImageClipboardExample.java:57) at ImageClipboardExample.lambda$new$0(ImageClipboardExample.java:27) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) at java.desktop/java.awt.Component.processEvent(Component.java:6379) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) Jul 03, 2020 1:59:51 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_CLICKED,(261,560),absolute(261,560),button=1,modifiers=Button1,clickCount=1] on frame0 Jul 03, 2020 1:59:51 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_CLICKED,(254,18),absolute(261,560),button=1,modifiers=Button1,clickCount=1] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:51 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764991190] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:51 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764991457] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:51 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 61dc4227 Jul 03, 2020 1:59:51 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 1f5bfba5 Jul 03, 2020 1:59:51 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 6ce02dca Jul 03, 2020 1:59:51 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 156d971b Jul 03, 2020 1:59:51 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 6300f528 Jul 03, 2020 1:59:51 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 11ca0b40 Jul 03, 2020 1:59:51 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 63c8d3d8 Jul 03, 2020 1:59:51 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 7ec3994c Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764992326] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(277,550),absolute(277,550),clickCount=0] on frame0 Jul 03, 2020 1:59:52 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(270,8),absolute(277,550),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764992333] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(295,538),absolute(295,538),clickCount=0] on frame0 Jul 03, 2020 1:59:52 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_EXITED,(288,-4),absolute(295,538),button=0,clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:52 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(295,538),absolute(295,538),clickCount=0] on frame0 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764992340] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(343,513),absolute(343,513),clickCount=0] on frame0 Jul 03, 2020 1:59:52 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(343,513),absolute(343,513),clickCount=0] on frame0 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764992346] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:52 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 72e1466f Jul 03, 2020 1:59:52 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 3f9833f0 Jul 03, 2020 1:59:52 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at ad263d Jul 03, 2020 1:59:52 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 3d232e7b Jul 03, 2020 1:59:52 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 123c7d9c Jul 03, 2020 1:59:52 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 21170ba3 Jul 03, 2020 1:59:52 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 624d99eb Jul 03, 2020 1:59:52 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 6309f176 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764992348] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764992355] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(461,473),absolute(461,473),clickCount=0] on frame0 Jul 03, 2020 1:59:52 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(461,473),absolute(461,473),clickCount=0] on frame0 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593764992385] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(491,463),absolute(491,463),clickCount=0] on frame0 Jul 03, 2020 1:59:52 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(491,463),absolute(491,463),clickCount=0] on frame0 Jul 03, 2020 1:59:52 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_EXITED,(523,458),absolute(523,458),button=0,clickCount=0] on frame0 Jul 03, 2020 1:59:52 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_EXITED,(523,458),absolute(523,458),button=0,clickCount=0] on frame0 Jul 03, 2020 1:59:53 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.SequencedEvent[] on frame0 Jul 03, 2020 1:59:53 PM java.awt.Component dispatchEventImpl FINEST: sun.awt.TimedWindowEvent[WINDOW_LOST_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:53 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> sun.awt.TimedWindowEvent[WINDOW_LOST_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:53 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: sun.awt.TimedWindowEvent[WINDOW_LOST_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:53 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: Active javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true], Current focused javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true], losing focus javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] opposite null Jul 03, 2020 1:59:53 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.FocusEvent[FOCUS_LOST,temporary,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:53 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> java.awt.event.FocusEvent[FOCUS_LOST,temporary,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:53 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: java.awt.event.FocusEvent[FOCUS_LOST,temporary,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:53 PM java.awt.KeyboardFocusManager setNativeFocusOwner FINEST: Calling peer sun.awt.windows.WKeyboardFocusManagerPeer at 6b620915 setCurrentFocusOwner for null Jul 03, 2020 1:59:53 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.FocusEvent[FOCUS_LOST,temporary,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:53 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.FocusEvent[FOCUS_LOST,temporary,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:53 PM sun.awt.windows.WComponentPeer handleJavaFocusEvent FINER: java.awt.event.FocusEvent[FOCUS_LOST,temporary,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 1:59:53 PM java.awt.Component dispatchEventImpl FINEST: sun.awt.TimedWindowEvent[WINDOW_LOST_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:53 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.WindowEvent[WINDOW_DEACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:53 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> java.awt.event.WindowEvent[WINDOW_DEACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:53 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: java.awt.event.WindowEvent[WINDOW_DEACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:53 PM java.awt.KeyboardFocusManager setGlobalActiveWindow FINER: Setting global active window to null, old active javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 1:59:53 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.WindowEvent[WINDOW_DEACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 1:59:53 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593764993565] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:53 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 18a88a80 Jul 03, 2020 1:59:53 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 1bcff50c Jul 03, 2020 1:59:53 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 7720415a Jul 03, 2020 1:59:53 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 2dfadb47 Jul 03, 2020 1:59:53 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 729e4659 Jul 03, 2020 1:59:53 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 9bbc32b Jul 03, 2020 1:59:53 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 135e7af Jul 03, 2020 1:59:53 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 24a4d006 Jul 03, 2020 1:59:53 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.SentEvent[] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 1:59:53 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.SentEvent[] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:18 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765018881] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:23 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: sun.awt.PeerEvent[INVOCATION_DEFAULT,runnable=sun.awt.datatransfer.SunClipboard$$Lambda$173/0x0000000800cc0ae8 at 45fef09f,notifier=null,catchExceptions=false,when=1593765023701] on sun.awt.windows.WClipboard at 60ec5bc6 Jul 03, 2020 2:00:23 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_ENTERED,(492,560),absolute(492,560),button=0,clickCount=0] on frame0 Jul 03, 2020 2:00:23 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_ENTERED,(485,18),absolute(492,560),button=0,clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:23 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(514,560),absolute(514,560),clickCount=0] on frame0 Jul 03, 2020 2:00:23 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(507,18),absolute(514,560),clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:23 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_EXITED,(601,573),absolute(601,573),button=0,clickCount=0] on frame0 Jul 03, 2020 2:00:23 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_EXITED,(594,31),absolute(601,573),button=0,clickCount=0] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:23 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593765023711] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:23 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 39ed906b Jul 03, 2020 2:00:23 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 13ed9047 Jul 03, 2020 2:00:23 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 749e522a Jul 03, 2020 2:00:23 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 6ab90c90 Jul 03, 2020 2:00:23 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 629eb848 Jul 03, 2020 2:00:23 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 1b5d9c70 Jul 03, 2020 2:00:23 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 5597d2bb Jul 03, 2020 2:00:23 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at d018ffe Jul 03, 2020 2:00:37 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.SequencedEvent[] on frame0 Jul 03, 2020 2:00:37 PM java.awt.Component dispatchEventImpl FINEST: sun.awt.TimedWindowEvent[WINDOW_GAINED_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> sun.awt.TimedWindowEvent[WINDOW_GAINED_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:37 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: sun.awt.TimedWindowEvent[WINDOW_GAINED_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:37 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.WindowEvent[WINDOW_ACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> java.awt.event.WindowEvent[WINDOW_ACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:37 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: java.awt.event.WindowEvent[WINDOW_ACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager setGlobalActiveWindow FINER: Setting global active window to javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true], old active null Jul 03, 2020 2:00:37 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.WindowEvent[WINDOW_ACTIVATED,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:37 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINER: tempLost javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true], toFocus javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.Component isRequestFocusAccepted FINEST: focus owner is null or this Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINER: SNFH for javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] in javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINEST: 0. Current focus owner null Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINEST: 0. Native focus owner null Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINEST: 0. Native focused window javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINEST: Request null Jul 03, 2020 2:00:37 PM java.awt.DefaultKeyboardFocusManager enqueueKeyEvents FINER: Enqueue at 1,593,764,978,930 for javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager shouldNativelyFocusHeavyweight FINEST: 5. SNFH_PROCEED for javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM sun.awt.windows.WComponentPeer requestFocus FINER: Proceeding with request to javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] in javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 2:00:37 PM sun.awt.windows.WComponentPeer requestFocus FINER: Requested window focus: true Jul 03, 2020 2:00:37 PM sun.awt.KeyboardFocusManagerPeerImpl deliverFocus FINER: Posting focus event: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.Component requestFocusHelper FINEST: Pass for javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.Component dispatchEventImpl FINEST: sun.awt.TimedWindowEvent[WINDOW_GAINED_FOCUS,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:37 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.SentEvent[] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:37 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.KeyboardFocusManager setNativeFocusOwner FINEST: Calling peer sun.awt.windows.WKeyboardFocusManagerPeer at 6b620915 setCurrentFocusOwner for javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 2:00:37 PM java.awt.DefaultKeyboardFocusManager typeAheadAssertions FINEST: Markers before FOCUS_GAINED on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.DefaultKeyboardFocusManager dumpMarkers FINEST: >>> Markers dump, time: 1,593,765,037,766 Jul 03, 2020 2:00:37 PM java.awt.DefaultKeyboardFocusManager dumpMarkers FINEST: >>> Marker after 1593764978930 on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.DefaultKeyboardFocusManager typeAheadAssertions FINEST: Markers after FOCUS_GAINED Jul 03, 2020 2:00:37 PM java.awt.DefaultKeyboardFocusManager dumpMarkers FINEST: >>> Markers dump, time: 1,593,765,037,768 Jul 03, 2020 2:00:37 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM sun.awt.im.InputContext activateInputMethod FINE: Current client component javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM sun.awt.windows.WComponentPeer handleJavaFocusEvent FINER: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4fe767f3,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:00:37 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=javax.swing.RepaintManager$ProcessingRunnable at d160138,notifier=null,catchExceptions=false,when=1593765037770] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:37 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 47e7c340 Jul 03, 2020 2:00:37 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 7d7d610c Jul 03, 2020 2:00:37 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 5e5e67f5 Jul 03, 2020 2:00:37 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 2728e300 Jul 03, 2020 2:00:37 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 7fa7d0aa Jul 03, 2020 2:00:37 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 72d8fd79 Jul 03, 2020 2:00:37 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 3a7f8f3a Jul 03, 2020 2:00:37 PM sun.awt.SunDisplayChanger add FINER: Adding listener: sun.awt.image.BufImgVolatileSurfaceManager at 5cc4992e Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038447] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_ENTERED,(518,87),absolute(518,87),button=0,clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_ENTERED,(518,87),absolute(518,87),button=0,clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(518,87),absolute(518,87),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(518,87),absolute(518,87),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038454] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(517,86),absolute(517,86),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(517,86),absolute(517,86),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038461] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038477] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(515,85),absolute(515,85),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(515,85),absolute(515,85),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038485] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(513,85),absolute(513,85),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(513,85),absolute(513,85),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038492] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(513,84),absolute(513,84),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(513,84),absolute(513,84),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038500] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(512,83),absolute(512,83),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(512,83),absolute(512,83),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038507] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(511,83),absolute(511,83),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(511,83),absolute(511,83),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038514] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(511,82),absolute(511,82),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(511,82),absolute(511,82),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038522] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(510,81),absolute(510,81),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(510,81),absolute(510,81),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038537] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(509,80),absolute(509,80),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(509,80),absolute(509,80),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038552] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(508,79),absolute(508,79),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(508,79),absolute(508,79),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038560] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(508,77),absolute(508,77),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(508,77),absolute(508,77),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038567] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(507,75),absolute(507,75),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(507,75),absolute(507,75),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038575] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(507,74),absolute(507,74),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(507,74),absolute(507,74),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038582] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(507,70),absolute(507,70),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(507,70),absolute(507,70),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038590] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(507,67),absolute(507,67),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(507,67),absolute(507,67),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038598] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(507,65),absolute(507,65),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(507,65),absolute(507,65),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038606] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(507,63),absolute(507,63),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(507,63),absolute(507,63),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038613] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(507,59),absolute(507,59),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(507,59),absolute(507,59),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038620] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(507,57),absolute(507,57),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(507,57),absolute(507,57),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038628] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(507,53),absolute(507,53),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(507,53),absolute(507,53),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038636] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(505,50),absolute(505,50),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(505,50),absolute(505,50),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038643] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(505,47),absolute(505,47),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(505,47),absolute(505,47),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038651] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(505,44),absolute(505,44),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(505,44),absolute(505,44),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038659] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(504,41),absolute(504,41),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(504,41),absolute(504,41),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038666] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(503,40),absolute(503,40),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(503,40),absolute(503,40),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038673] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(503,37),absolute(503,37),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(503,37),absolute(503,37),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038680] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(501,36),absolute(501,36),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(501,36),absolute(501,36),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038688] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(500,34),absolute(500,34),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(500,34),absolute(500,34),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038696] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(500,33),absolute(500,33),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(500,33),absolute(500,33),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038703] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(499,33),absolute(499,33),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(499,33),absolute(499,33),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038711] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(499,31),absolute(499,31),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(499,31),absolute(499,31),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038719] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(498,31),absolute(498,31),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(498,31),absolute(498,31),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038726] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(497,30),absolute(497,30),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(497,30),absolute(497,30),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.InvocationEvent[INVOCATION_DEFAULT,runnable=sun.awt.GlobalCursorManager$NativeUpdater at 38e52736,notifier=null,catchExceptions=false,when=1593765038741] on sun.awt.windows.WToolkit at 34d9d04 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_MOVED,(497,30),absolute(497,30),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_MOVED,(497,30),absolute(497,30),clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: java.awt.event.MouseEvent[MOUSE_EXITED,(497,29),absolute(497,29),button=0,clickCount=0] on frame0 Jul 03, 2020 2:00:38 PM java.awt.Component dispatchEventImpl FINEST: java.awt.event.MouseEvent[MOUSE_EXITED,(497,29),absolute(497,29),button=0,clickCount=0] on frame0 Jul 03, 2020 2:00:39 PM java.awt.EventDispatchThread pumpOneEventForFilters FINEST: Dispatching: sun.awt.TimedWindowEvent[WINDOW_CLOSING,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:39 PM java.awt.Component dispatchEventImpl FINEST: sun.awt.TimedWindowEvent[WINDOW_CLOSING,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:39 PM java.awt.KeyboardFocusManager retargetFocusEvent FINER: >>> sun.awt.TimedWindowEvent[WINDOW_CLOSING,opposite=null,oldState=0,newState=0] on frame0 Jul 03, 2020 2:00:39 PM java.awt.DefaultKeyboardFocusManager dispatchEvent FINE: sun.awt.TimedWindowEvent[WINDOW_CLOSING,opposite=null,oldState=0,newState=0] on frame0 D:\Oracle\My_Tasks\Bug-JDK-8246248> D:\Oracle\My_Tasks\Bug-JDK-8246248> D:\Oracle\My_Tasks\Bug-JDK-8246248> D:\Oracle\My_Tasks\Bug-JDK-8246248> D:\Oracle\My_Tasks\Bug-JDK-8246248> D:\Oracle\My_Tasks\Bug-JDK-8246248> D:\Oracle\My_Tasks\Bug-JDK-8246248>d:\jdk-client\jdk-client\build\windows-x86_64-server-release\jdk\bin\java -Djava.util.logging.config.file=d:\jdk-client\jdk-client\build\windows-x86_64-server-release\jdk\conf\logging.properties ImageClipboardExample Jul 03, 2020 2:06:33 PM sun.awt.windows.WToolkit FINE: Win version: 0x47bb000a = 1203437578 (Windows Vista) Jul 03, 2020 2:06:34 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.properties.version=3 Jul 03, 2020 2:06:34 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.frame.captionFont=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:34 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.frame.captionFont.height=12 Jul 03, 2020 2:06:34 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.captionHeight=22 Jul 03, 2020 2:06:34 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.captionButtonWidth=36 Jul 03, 2020 2:06:34 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.captionButtonHeight=22 Jul 03, 2020 2:06:34 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.frame.smallCaptionFont=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:34 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.frame.smallCaptionFont.height=12 Jul 03, 2020 2:06:34 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.smallCaptionHeight=22 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.smallCaptionButtonWidth=22 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.smallCaptionButtonHeight=22 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.frame.sizingBorderWidth=1 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.menu.font=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.menu.font.height=12 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.menu.height=19 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.menu.buttonWidth=19 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.scrollbar.width=17 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.scrollbar.height=17 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.status.font=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.status.font.height=12 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.tooltip.font=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.tooltip.font.height=12 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.messagebox.font=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.messagebox.font.height=12 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.icon.hspacing=75 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.icon.vspacing=75 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.icon.titleWrappingOn=true Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.icon.font=java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.icon.font.height=12 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.activeCaptionGradientColor=java.awt.Color[r=185,g=209,b=234] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.inactiveCaptionGradientColor=java.awt.Color[r=215,g=228,b=242] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.item.hotTrackedColor=java.awt.Color[r=0,g=102,b=204] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.3d.darkShadowColor=java.awt.Color[r=105,g=105,b=105] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.3d.backgroundColor=java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.3d.highlightColor=java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.3d.lightColor=java.awt.Color[r=227,g=227,b=227] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.3d.shadowColor=java.awt.Color[r=160,g=160,b=160] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.button.textColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.desktop.backgroundColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.activeCaptionColor=java.awt.Color[r=153,g=180,b=209] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.activeBorderColor=java.awt.Color[r=180,g=180,b=180] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.color=java.awt.Color[r=100,g=100,b=100] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.backgroundColor=java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.captionTextColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.inactiveBorderColor=java.awt.Color[r=244,g=247,b=252] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.inactiveCaptionColor=java.awt.Color[r=191,g=205,b=219] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.inactiveCaptionTextColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.frame.textColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.item.highlightColor=java.awt.Color[r=0,g=120,b=215] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.item.highlightTextColor=java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.mdi.backgroundColor=java.awt.Color[r=171,g=171,b=171] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.menu.backgroundColor=java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.menu.textColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.menubar.backgroundColor=java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.scrollbar.backgroundColor=java.awt.Color[r=200,g=200,b=200] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.text.grayedTextColor=java.awt.Color[r=109,g=109,b=109] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.tooltip.backgroundColor=java.awt.Color[r=255,g=255,b=225] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setColorProperty FINE: win.tooltip.textColor=java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.caret.width=1 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.frame.fullWindowDragsOn=true Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.text.fontSmoothingOn=true Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.text.fontSmoothingType=2 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.text.fontSmoothingContrast=1200 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.text.fontSmoothingOrientation=1 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.drag.width=4 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: win.drag.height=4 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: DnD.gestureMotionThreshold=2 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: awt.mouse.numButtons=5 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setIntegerProperty FINE: awt.multiClickInterval=500 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: awt.dynamicLayoutSupported=true Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: awt.wheelMousePresent=true Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.frame.captionGradientsOn=true Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.item.hotTrackingOn=true Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.menu.keyboardCuesOn=false Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.highContrast.on=false Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: awt.file.showHiddenFiles=false Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: awt.file.showAttribCol=false Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.default=WinPlaySound(.Default) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.close=WinPlaySound(Close) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.maximize=WinPlaySound(Maximize) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.minimize=WinPlaySound(Minimize) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.menuCommand=WinPlaySound(MenuCommand) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.menuPopup=WinPlaySound(MenuPopup) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.open=WinPlaySound(Open) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.restoreDown=WinPlaySound(RestoreDown) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.restoreUp=WinPlaySound(RestoreUp) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.asterisk=WinPlaySound(SystemAsterisk) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.exclamation=WinPlaySound(SystemExclamation) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.exit=WinPlaySound(SystemExit) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.hand=WinPlaySound(SystemHand) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.question=WinPlaySound(SystemQuestion) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setSoundProperty FINE: win.sound.start=WinPlaySound(SystemStart) Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.ansiFixed.font=java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.ansiFixed.font.height=13 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.ansiVar.font=java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.ansiVar.font.height=11 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.deviceDefault.font=java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.deviceDefault.font.height=16 Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.defaultGUI.font=java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=11] Jul 03, 2020 2:06:35 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.defaultGUI.font.height=11 Jul 03, 2020 2:06:39 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.oemFixed.font=java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18] Jul 03, 2020 2:06:39 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.oemFixed.font.height=18 Jul 03, 2020 2:06:39 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.system.font=java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16] Jul 03, 2020 2:06:39 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.system.font.height=16 Jul 03, 2020 2:06:39 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.systemFixed.font=java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18] Jul 03, 2020 2:06:39 PM sun.awt.windows.WDesktopProperties setFontProperty FINE: win.systemFixed.font.height=18 Jul 03, 2020 2:06:39 PM sun.awt.windows.WDesktopProperties setBooleanProperty FINE: win.xpstyle.themeActive=true Jul 03, 2020 2:06:39 PM sun.awt.windows.WDesktopProperties setStringProperty FINE: win.xpstyle.dllName=C:\WINDOWS\resources\themes\Aero\Aero.msstyles Jul 03, 2020 2:06:39 PM sun.awt.windows.WDesktopProperties setStringProperty FINE: win.xpstyle.sizeName=NormalSize Jul 03, 2020 2:06:39 PM sun.awt.windows.WDesktopProperties setStringProperty FINE: win.xpstyle.colorName=NormalColor Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.systemFixed.font to java.awt.Font[family=Dialog,name=Fixedsys,style=plain,size=18] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.inactiveBorderColor to java.awt.Color[r=244,g=247,b=252] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionGradientsOn to true Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.messagebox.font to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.smallCaptionButtonHeight to 22 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.inactiveCaptionGradientColor to java.awt.Color[r=215,g=228,b=242] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.ansiFixed.font to java.awt.Font[family=Monospaced,name=Monospaced,style=plain,size=13] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.xpstyle.themeActive to true Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.xpstyle.dllName to C:\WINDOWS\resources\themes\Aero\Aero.msstyles Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.3d.highlightColor to java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.smallCaptionFont to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.dynamicLayoutSupported to true Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionFont.height to 12 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.button.textColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.asterisk to WinPlaySound(SystemAsterisk) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.restoreUp to WinPlaySound(RestoreUp) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.sizingBorderWidth to 1 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.smallCaptionHeight to 22 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.open to WinPlaySound(Open) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.drag.width to 4 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.item.highlightColor to java.awt.Color[r=0,g=120,b=215] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.inactiveCaptionColor to java.awt.Color[r=191,g=205,b=219] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionButtonWidth to 36 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.activeCaptionColor to java.awt.Color[r=153,g=180,b=209] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.wheelMousePresent to true Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.maximize to WinPlaySound(Maximize) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed DnD.gestureMotionThreshold to 2 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.mdi.backgroundColor to java.awt.Color[r=171,g=171,b=171] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.menuCommand to WinPlaySound(MenuCommand) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menubar.backgroundColor to java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.drag.height to 4 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.oemFixed.font.height to 18 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.scrollbar.height to 17 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.color to java.awt.Color[r=100,g=100,b=100] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.scrollbar.width to 17 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.textColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.3d.lightColor to java.awt.Color[r=227,g=227,b=227] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.hand to WinPlaySound(SystemHand) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.properties.version to 3 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.deviceDefault.font.height to 16 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.system.font to java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.icon.vspacing to 75 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.3d.darkShadowColor to java.awt.Color[r=105,g=105,b=105] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.font to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.start to WinPlaySound(SystemStart) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.xpstyle.sizeName to NormalSize Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.smallCaptionFont.height to 12 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.activeCaptionGradientColor to java.awt.Color[r=185,g=209,b=234] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.exclamation to WinPlaySound(SystemExclamation) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.item.hotTrackedColor to java.awt.Color[r=0,g=102,b=204] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.scrollbar.backgroundColor to java.awt.Color[r=200,g=200,b=200] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.defaultGUI.font.height to 11 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.backgroundColor to java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.text.fontSmoothingType to 2 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.tooltip.font to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.font.height to 12 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.keyboardCuesOn to false Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.ansiVar.font to java.awt.Font[family=Microsoft Sans Serif,name=Microsoft Sans Serif,style=plain,size=11] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.3d.shadowColor to java.awt.Color[r=160,g=160,b=160] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.font.desktophints to {Text-specific antialiasing enable key=LCD HRGB antialiasing text mode, Text-specific LCD contrast key=120} Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.file.showHiddenFiles to false Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.ansiFixed.font.height to 13 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed DnD.Autoscroll.cursorHysteresis to null Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.tooltip.textColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.ansiVar.font.height to 11 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.fullWindowDragsOn to true Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.minimize to WinPlaySound(Minimize) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.restoreDown to WinPlaySound(RestoreDown) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.close to WinPlaySound(Close) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.status.font.height to 12 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.3d.backgroundColor to java.awt.Color[r=240,g=240,b=240] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.smallCaptionButtonWidth to 22 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.icon.font to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.buttonWidth to 19 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.deviceDefault.font to java.awt.Font[family=Dialog,name=Dialog,style=bold,size=16] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.text.fontSmoothingOn to true Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.oemFixed.font to java.awt.Font[family=Dialog,name=8514oem,style=plain,size=18] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.menuPopup to WinPlaySound(MenuPopup) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.system.font.height to 16 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionButtonHeight to 22 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionFont to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.xpstyle.colorName to NormalColor Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.inactiveCaptionTextColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.highContrast.on to false Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.activeBorderColor to java.awt.Color[r=180,g=180,b=180] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.item.hotTrackingOn to true Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.question to WinPlaySound(SystemQuestion) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.exit to WinPlaySound(SystemExit) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.propNames to [Ljava.lang.String;@1bb5a082 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.text.fontSmoothingContrast to 1200 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.icon.titleWrappingOn to true Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.file.showAttribCol to false Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.backgroundColor to java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.tooltip.font.height to 12 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionHeight to 22 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.defaultGUI.font to java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=11] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.systemFixed.font.height to 18 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.caret.width to 1 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.text.fontSmoothingOrientation to 1 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.icon.font.height to 12 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.text.grayedTextColor to java.awt.Color[r=109,g=109,b=109] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.textColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.mouse.numButtons to 5 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.tooltip.backgroundColor to java.awt.Color[r=255,g=255,b=225] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.status.font to java.awt.Font[family=Segoe UI,name=Segoe UI,style=plain,size=12] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed awt.multiClickInterval to 500 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.menu.height to 19 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.messagebox.font.height to 12 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.frame.captionTextColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.icon.hspacing to 75 Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.sound.default to WinPlaySound(.Default) Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.item.highlightTextColor to java.awt.Color[r=255,g=255,b=255] Jul 03, 2020 2:06:39 PM sun.awt.windows.WToolkit updateProperties FINER: changed win.desktop.backgroundColor to java.awt.Color[r=0,g=0,b=0] Jul 03, 2020 2:06:40 PM sun.awt.windows.WWindowPeer updateGC FINER: Screen number: 0 Jul 03, 2020 2:06:40 PM sun.awt.windows.WComponentPeer coalescePaintEvent FINEST: coalescePaintEvent: PAINT: add: x = 7, y = 30, width = 511, height = 537 Jul 03, 2020 2:06:40 PM sun.awt.windows.WComponentPeer requestFocus FINER: Proceeding with request to javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4059c416,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] in javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 2:06:40 PM sun.awt.windows.WComponentPeer requestFocus FINER: Requested window focus: true Jul 03, 2020 2:06:40 PM sun.awt.windows.WComponentPeer handleJavaFocusEvent FINER: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4059c416,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:06:43 PM sun.awt.windows.WComponentPeer handleJavaFocusEvent FINER: java.awt.event.FocusEvent[FOCUS_LOST,temporary,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4059c416,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:06:49 PM sun.awt.windows.WComponentPeer requestFocus FINER: Proceeding with request to javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4059c416,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] in javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 2:06:49 PM sun.awt.windows.WComponentPeer requestFocus FINER: Requested window focus: true Jul 03, 2020 2:06:49 PM sun.awt.windows.WComponentPeer handleJavaFocusEvent FINER: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4059c416,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:06:50 PM sun.awt.windows.WClipboard setContentsNative WARNING: Registered service providers failed to encode java.io.IOException: Registered service providers failed to encode BufferedImage at 5765ba79: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space = java.awt.color.ICC_ColorSpace at 3d1b87c9 transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width = 512 height = 512 #numDataElements 4 dataOff[0] = 3 to image/jpeg at java.desktop/sun.awt.datatransfer.DataTransferer.imageToStandardBytesImpl(DataTransferer.java:1799) at java.desktop/sun.awt.datatransfer.DataTransferer.imageToStandardBytes(DataTransferer.java:1713) at java.desktop/sun.awt.windows.WDataTransferer.imageToPlatformBytes(WDataTransferer.java:353) at java.desktop/sun.awt.datatransfer.DataTransferer.translateTransferable(DataTransferer.java:855) at java.desktop/sun.awt.windows.WDataTransferer.translateTransferable(WDataTransferer.java:220) at java.desktop/sun.awt.windows.WClipboard.setContentsNative(WClipboard.java:85) at java.desktop/sun.awt.datatransfer.SunClipboard.setContents(SunClipboard.java:105) at java.desktop/javax.swing.TransferHandler.exportToClipboard(TransferHandler.java:787) at ImageClipboardExample.copyToClipboard(ImageClipboardExample.java:57) at ImageClipboardExample.lambda$new$0(ImageClipboardExample.java:27) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6614) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) at java.desktop/java.awt.Component.processEvent(Component.java:6379) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) Jul 03, 2020 2:06:52 PM sun.awt.windows.WComponentPeer handleJavaFocusEvent FINER: java.awt.event.FocusEvent[FOCUS_LOST,temporary,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4059c416,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] Jul 03, 2020 2:07:09 PM sun.awt.windows.WComponentPeer requestFocus FINER: Proceeding with request to javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4059c416,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] in javax.swing.JFrame[frame0,0,0,526x575,layout=java.awt.BorderLayout,title=,resizable,normal,defaultCloseOperation=EXIT_ON_CLOSE,rootPane=javax.swing.JRootPane[,7,30,512x538,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true] Jul 03, 2020 2:07:09 PM sun.awt.windows.WComponentPeer requestFocus FINER: Requested window focus: true Jul 03, 2020 2:07:09 PM sun.awt.windows.WComponentPeer handleJavaFocusEvent FINER: java.awt.event.FocusEvent[FOCUS_GAINED,permanent,opposite=null,cause=ACTIVATION] on javax.swing.JButton[,0,512,512x26,alignmentX=0.0,alignmentY=0.5,border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource at 4059c416,flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Copy,defaultCapable=true] D:\Oracle\My_Tasks\Bug-JDK-8246248> From ambarish.rapte at oracle.com Tue Jul 14 12:37:20 2020 From: ambarish.rapte at oracle.com (Ambarish Rapte) Date: Tue, 14 Jul 2020 05:37:20 -0700 (PDT) Subject: [15] RFR : 8249278 : Revert JDK-8226253 Message-ID: Hi, Please review this fix: JBS: https://bugs.openjdk.java.net/browse/JDK-8249278 Webrev: http://cr.openjdk.java.net/~arapte/a11y/8249278/webrev.0/ This change reverts the fix for JDK-8226253. The fix of JDK-8226253 breaks the specification of AccessibleState.SHOWING for JList and has caused a regression with JTree. There is no alternative to fix JDK-8226253 on JDK side and the issue should be really fixed on Screen reader side. So in order to keep the correctness of spec and avoid any new regression, the fix needs to be reverted. Regards, Ambarish -------------- next part -------------- An HTML attachment was scrubbed... URL: From philip.race at oracle.com Tue Jul 14 20:30:22 2020 From: philip.race at oracle.com (Philip Race) Date: Tue, 14 Jul 2020 13:30:22 -0700 Subject: [15] RFR : 8249278 : Revert JDK-8226253 In-Reply-To: References: Message-ID: <5F0E15DE.1000203@oracle.com> adding swing-dev which is the correct list for this Swing change. It looks like a faithful backout of https://bugs.openjdk.java.net/browse/JDK-8226253 https://hg.openjdk.java.net/jdk/jdk/rev/3ea8a0c5c264 except that the (c) year is remaining 2020 .. which I think just indicates the silliness of all these (c) updates since the only changes to these files in 2020 were those which you have now backed out. So I think you should revert the (c) changes as well. If some one else comes along and updates all files in JDK with updates in 2020 and so re-adds it then that is their problem ... -phil. On 7/14/20, 5:37 AM, Ambarish Rapte wrote: > > Hi, > > Please review this fix: > > JBS: https://bugs.openjdk.java.net/browse/JDK-8249278 > > Webrev: http://cr.openjdk.java.net/~arapte/a11y/8249278/webrev.0/ > > > This change reverts the fix for JDK-8226253. > > The fix of JDK-8226253 breaks the specification of > AccessibleState.SHOWING for JList and has caused a regression with JTree. > > There is no alternative to fix JDK-8226253 on JDK side and the issue > should be really fixed on Screen reader side. > > So in order to keep the correctness of spec and avoid any new > regression, the fix needs to be reverted. > > Regards, > > Ambarish > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ambarish.rapte at oracle.com Wed Jul 15 02:44:11 2020 From: ambarish.rapte at oracle.com (Ambarish Rapte) Date: Tue, 14 Jul 2020 19:44:11 -0700 (PDT) Subject: [15] RFR : 8249278 : Revert JDK-8226253 which breaks the spec of AccessibleState.SHOWING for JList Message-ID: Hello Phil, Thanks for the review and correcting the mail group, Please take a look at the updated webrev with C years also backed out: http://cr.openjdk.java.net/~arapte/a11y/8249278/webrev.1 Regards, Ambarish. From: Philip Race Sent: Wednesday, July 15, 2020 2:00 AM To: Ambarish Rapte ; swing-dev at openjdk.java.net Cc: awt-dev at openjdk.java.net Subject: Re: [15] RFR : 8249278 : Revert JDK-8226253 adding swing-dev which is the correct list for this Swing change. It looks like a faithful backout of https://bugs.openjdk.java.net/browse/JDK-8226253 https://hg.openjdk.java.net/jdk/jdk/rev/3ea8a0c5c264 except that the (c) year is remaining 2020 .. which I think just indicates the silliness of all these (c) updates since the only changes to these files in 2020 were those which you have now backed out. So I think you should revert the (c) changes as well. If some one else comes along and updates all files in JDK with updates in 2020 and so re-adds it then that is their problem ... -phil. On 7/14/20, 5:37 AM, Ambarish Rapte wrote: Hi, Please review this fix: JBS: https://bugs.openjdk.java.net/browse/JDK-8249278 Webrev: HYPERLINK "http://cr.openjdk.java.net/%7Earapte/a11y/8249278/webrev.0/"http://cr.openjdk.java.net/~arapte/a11y/8249278/webrev.0/ This change reverts the fix for JDK-8226253. The fix of JDK-8226253 breaks the specification of AccessibleState.SHOWING for JList and has caused a regression with JTree. There is no alternative to fix JDK-8226253 on JDK side and the issue should be really fixed on Screen reader side. So in order to keep the correctness of spec and avoid any new regression, the fix needs to be reverted. Regards, Ambarish -------------- next part -------------- An HTML attachment was scrubbed... URL: From philip.race at oracle.com Wed Jul 15 15:43:55 2020 From: philip.race at oracle.com (Philip Race) Date: Wed, 15 Jul 2020 08:43:55 -0700 Subject: [15] RFR : 8249278 : Revert JDK-8226253 which breaks the spec of AccessibleState.SHOWING for JList In-Reply-To: References: Message-ID: <5F0F243B.6050607@oracle.com> +1 -phil On 7/14/20, 7:44 PM, Ambarish Rapte wrote: > > Hello Phil, > > Thanks for the review and correcting the mail group, > > Please take a look at the updated webrev with ? years also backed out: > > http://cr.openjdk.java.net/~arapte/a11y/8249278/webrev.1 > > > Regards, > > Ambarish. > > *From:*Philip Race > *Sent:* Wednesday, July 15, 2020 2:00 AM > *To:* Ambarish Rapte ; > swing-dev at openjdk.java.net > *Cc:* awt-dev at openjdk.java.net > *Subject:* Re: [15] RFR : 8249278 : Revert JDK-8226253 > > adding swing-dev which is the correct list for this Swing change. > > It looks like a faithful backout of > https://bugs.openjdk.java.net/browse/JDK-8226253 > https://hg.openjdk.java.net/jdk/jdk/rev/3ea8a0c5c264 > > except that the (c) year is remaining 2020 .. which I think just > indicates the silliness of all these (c) updates since the only > changes to these files in 2020 were those which you have now backed out. > > So I think you should revert the (c) changes as well. > > If some one else comes along and updates all files in JDK with updates > in 2020 > and so re-adds it then that is their problem ... > > -phil. > > On 7/14/20, 5:37 AM, Ambarish Rapte wrote: > > Hi, > > Please review this fix: > > JBS: https://bugs.openjdk.java.net/browse/JDK-8249278 > > Webrev: http://cr.openjdk.java.net/~arapte/a11y/8249278/webrev.0/ > > > This change reverts the fix for JDK-8226253. > > The fix of JDK-8226253 breaks the specification of > AccessibleState.SHOWING for JList and has caused a regression with > JTree. > > There is no alternative to fix JDK-8226253 on JDK side and the > issue should be really fixed on Screen reader side. > > So in order to keep the correctness of spec and avoid any new > regression, the fix needs to be reverted. > > Regards, > > Ambarish > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Sergey.Bylokhov at oracle.com Wed Jul 15 21:27:41 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Wed, 15 Jul 2020 14:27:41 -0700 Subject: [15] RFR : 8249278 : Revert JDK-8226253 which breaks the spec of AccessibleState.SHOWING for JList In-Reply-To: <5F0F243B.6050607@oracle.com> References: <5F0F243B.6050607@oracle.com> Message-ID: +1 On 15.07.2020 08:43, Philip Race wrote: > +1 > > -phil > > On 7/14/20, 7:44 PM, Ambarish Rapte wrote: >> >> Hello Phil, >> >> Thanks for the review and correcting the mail group, >> >> Please take a look at the updated webrev with ? years also backed out: >> >> http://cr.openjdk.java.net/~arapte/a11y/8249278/webrev.1 >> >> Regards, >> >> Ambarish. >> >> *From:*Philip Race >> *Sent:* Wednesday, July 15, 2020 2:00 AM >> *To:* Ambarish Rapte ; swing-dev at openjdk.java.net >> *Cc:* awt-dev at openjdk.java.net >> *Subject:* Re: [15] RFR : 8249278 : Revert JDK-8226253 >> >> adding swing-dev which is the correct list for this Swing change. >> >> It looks like a faithful backout of >> https://bugs.openjdk.java.net/browse/JDK-8226253 >> https://hg.openjdk.java.net/jdk/jdk/rev/3ea8a0c5c264 >> >> except that the (c) year is remaining 2020 .. which I think just >> indicates the silliness of all these (c) updates since the only >> changes to these files in 2020 were those which you have now backed out. >> >> So I think you should revert the (c) changes as well. >> >> If some one else comes along and updates all files in JDK with updates in 2020 >> and so re-adds it then that is their problem ... >> >> -phil. >> >> On 7/14/20, 5:37 AM, Ambarish Rapte wrote: >> >> Hi, >> >> Please review this fix: >> >> JBS: https://bugs.openjdk.java.net/browse/JDK-8249278 >> >> Webrev: http://cr.openjdk.java.net/~arapte/a11y/8249278/webrev.0/ >> >> This change reverts the fix for JDK-8226253. >> >> The fix of JDK-8226253 breaks the specification of AccessibleState.SHOWING for JList and has caused a regression with JTree. >> >> There is no alternative to fix JDK-8226253 on JDK side and the issue should be really fixed on Screen reader side. >> >> So in order to keep the correctness of spec and avoid any new regression, the fix needs to be reverted. >> >> Regards, >> >> Ambarish >> -- Best regards, Sergey. From alexey.ivanov at oracle.com Wed Jul 15 23:46:27 2020 From: alexey.ivanov at oracle.com (Alexey Ivanov) Date: Thu, 16 Jul 2020 00:46:27 +0100 Subject: RFR: 8182043 Access to Windows Large Icons In-Reply-To: <6958ab9d-b4b2-8012-9287-8abdcf19769c@oracle.com> References: <6eb1f0f8-f347-0048-c531-1ef07ae3f2a9@oracle.com> <34c75ffd-08b4-5ee3-3308-2953e272f20a@oracle.com> <780f8a0c-0d65-643d-e7c6-862f0569d927@oracle.com> <1704723d-0982-e8bc-162f-32e5cd9953bb@oracle.com> <5EEA59FC.10805@oracle.com> <42309722-7820-6e47-0156-17bf03d4587f@oracle.com> <2f6c8f20-766c-39fa-d749-a022794cbcea@oracle.com> <51783cd5-d2ec-0d30-30f5-3ce8d2c7a696@oracle.com> <6958ab9d-b4b2-8012-9287-8abdcf19769c@oracle.com> Message-ID: <8fe4149d-421a-a7b4-a069-2c735d4adb05@oracle.com> Hi Alexander, I've run some tests and this version works good. However, I noticed the new version is slower than before, it could be due to the fact that the entire set of icons is extracted from the native. On average, JFileChooser is 100ms slower to show on the screen. I think we should limit the number of icons that we extract as you did in webrev.01. If I request the icon of size 16: FileSystemView.getFileSystemView().getSystemIcon(new File("C:\"), 16); the resulting icon contains icon sizes 16, 24, 32, 48, 64, 72, 96, 128, 256. Hardly the icon of size 96 and above will ever be used: 96px is 6 times 16px. Getting 48px-sized icon corresponds to 300% scaling, it may be reasonable, yet still unlikely to be used. Then if I request the icon of size 48: FileSystemView.getFileSystemView().getSystemIcon(new File("C:\"), 48); the resulting icon contains the same set of sizes. But the sizes smaller than the base size will never be used. I believe scaling factors less than 100% are not supported. So we should decide up to which resolution we get the icons. Getting icons up to 200% makes sense. What about the lower limit? if the requested size matches one from our list, nothing to decide. What if size of 33 is requested? Scaling up 32?32 icon will likely give a better result than scaling down 48?48. Will such an implementation be good enough? This would resolve this RFE: provide access to Windows large icon. Then another problem which we're trying to solve: make JFileChooser support High DPI environments. In majority of cases, JFileChooser will use another method to extract the icon: Win32ShellFolder2.getIcon(boolean). This function uses SHGFI_SMALLICON or SHGFI_LARGEICON parameters to SHGetFileInfo, and therefore the size is limited to 16?16 and 32?32. It will return the icon of the currently configured size for the shell icon, small and large correspondingly; however, this parameter cannot be easily changed. On the other hand, the shell icon size takes DPI into account, and the size of the returned icon may differ from 16 and 32. This situation where the size was different from the requested one was handled by wrapping the icon into MultiResolutionIconImage: Win32ShellFolder2.makeIcon(long hIcon, int size) -??????????????? return size == baseSize -??????????????????????? ? img -??????????????????????? : new MultiResolutionIconImage(baseSize, img); +??????????????????????? new BufferedImage(iconSize, iconSize, BufferedImage.TYPE_INT_ARGB); +??????????????? img.setRGB(0, 0, iconSize, iconSize, iconBits, 0, iconSize); +??????????????? return img; The new code works well for getIcon(int size) which wraps a set of icons into MultiResolutionIconImage. I think the calls to getIcon(boolean getLargeIcon) should still wrap the result into MultiResolutionIconImage if the size differs from the requested one. The code at 1158???????????????? if (newIcon.getWidth(null) == s) { 1159???????????????????? multiResolutionIcon.put(s, newIcon); 1160???????????????? } handles the same situation. Yet here, we'll throw away the icon if its size is not equal to the requested one. I wonder if this condition is ever false, however. To provide better support for High DPI environments in JFileChooser, getIcon(boolean getLargeIcon) should also return a set of icons. This also applies to Win32ShellFolder2.getSystemIcon(SystemIcon iconType) which returns standard icons for message boxes, or JOptionPane. > But there's one catch: new way of retrieving icons does not get the > custom drive > icon (can be seen at disk C: - the windows logo identifying the > windows system drive > is no longer present). I am questioning myself, what is better: to > have better icon quality > and missing custom disk logo or to have custom disk logo and mediocre > icon quality? Which is weird, but I also noticed it. I wonder why different APIs in Windows give different icons: SHGetFileInfo which is used in getIcon(boolean getLargeIcon), and IExtractIcon::GetIconLocation and IExtractIcon::Extract which are used in getIcon(int size) that calls extractIcon(). The former function, SHGetFileInfo, can also decorate icons with link (shortcut) overlay whereas the latter does not seem to provide such an option. As for High DPI environments and memory footprint, getting icon sizes according to the display scaling looks like an ideal solution. But it seems too tricky. The MultiResolutionIconImage should store all the details of the file or the shell folder to be able to fetch a different size of DPI changes. Eventually, keeping lots of objects to achieve that could have larger footprint than storing a set of icons all the time. Overall, the current approach of fetching a set of icons to cater for the most common scaling factors looks sensible. Regards, Alexey On 09/07/2020 00:21, Alexey Ivanov wrote: > Hi Alexander, > > Sorry for my belated review. > > *FileSystemView.java* > I couldn't build JDK because of the warning about empty

in javadoc > for getSystemIcon(File f, int size). > >

is not needed before

. Yet 

should be added after each > empty line in the javadoc to start a new paragraph, otherwise all the > text is presented one long description. > > 276???? * @param size width and height of the icon in pixels to be scaled > 277???? *???????????? (valid range: 1 to 256) > > I'd drop "to be scaled"; width and height are the base size of the > icon for the case. > > > *ShellFolder.java* > 205????? * @param size size of the icon > 0(Valid range: 1 to 256) > > I recommend adding space before the opening parenthesis and use > lower-case in the parentheses as in FileSystemView.java. > > > *Win32ShellFolder2.java* > 80???? private final static int[] ICON_RESOLUTIONS > 81???????????? = {8, 16, 24, 32, 48, 64, 72, 96, 128, 256}; > Shall we drop 8 from the list? The size of 8?8 is non-standard for > Windows, is it provided by any Windows Shell interfaces? > > > *Win32ShellFolder2.java* > The trickery with newIcon2 in getIcon(final boolean getLargeIcon) is > for getting both 16?16 and 32?32 and returning them as > MultiResolutionImage, isn't it? > > I guess the best results would be if we get a list of 16?16, 24?24, > and 32?32 icons when small icon is requested, and 32?32, 48?48, and > 64?64 when large icon is requested, which would cover scaling factors > of 100%, 150%, and 200%. > > I don't think we'll ever need small icon when large one is requested, > and if I read the code correctly this is what would happen). However, > JFileChooser does not seem to allow for large icons in its file view, > thus adding the larger icon makes the rendering crispier in High DPI > environments. > > 1154???????????????? if (size > 512 || size < 4) { > 1155???????????????????? return newIcon; > 1156???????????????? } > I can understand that there are no useful resolutions if size of 512 > or larger is requested. Should it be 256 or rather > ICON_RESOLUTIONS[ICON_RESOLUTIONS.length - 1]? > > Javadoc states the valid range ends at 256. > > As for the minimum size? In my opinion, icon size less than 8 is not > viable; on the other hand we can't make any assumptions. So if the > requested size is less than 4, then we'll return only 8?8 icon (or > 16?16, if 8 is dropped from the list). Do I get it right? > > > *ShellFolder2.cpp* > 981???????????? hres = pIcon->Extract(szBuf, index, &hIcon, &hIconLow, > (16 << 16) + size); > 982???????????? if (size < 24) { > > I wonder why you extract two icons, you never use both. This adds a > delay: only one of the extracted icons is ever used. > If the idea is to limit the size by 16, then min(16, size) passed as > the icon size would do the trick. > > > With this new version, I noticed that JFileChooser takes longer to > appear and then longer to populate the file list. > > I'm still playing around with the build but I wanted to provide my > feedback. > > > Regards, > Alexey > > On 29/06/2020 15:27, Alexander Zuev wrote: >> Alexey, Sergey, >> >> ? here's the latest version of the fix: >> >> http://cr.openjdk.java.net/~kizune/8182043/webrev.02/ >> >> It adds one more native method - hiResIconAvailable >> that queries if system will be able to provide high resolution icons >> for a given file. >> Now i have tested three approaches with the FileManager: >> The old one - at magnification 150% can be seen here: >> http://cr.openjdk.java.net/~kizune/8182043/example/fchooser_old_150.PNG >> I changed the behavior by making the icon loaded by the FileChooser a >> MultiResolutionIcon >> carrying both small and large icons at the same time. >> The result looks much better - here's the same view with the >> intermediate fix: >> http://cr.openjdk.java.net/~kizune/8182043/example/fchooser_inter_150.PNG >> >> But then i added the new native method and in FileChooser i'm getting >> the multiResolutionIcon >> for all the files for which it is possible. The result looks much >> crisper: >> http://cr.openjdk.java.net/~kizune/8182043/example/fchooser_new_150.PNG >> But there's one catch: new way of retrieving icons does not get the >> custom drive >> icon (can be seen at disk C: - the windows logo identifying the >> windows system drive >> is no longer present). I am questioning myself, what is better: to >> have better icon quality >> and missing custom disk logo or to have custom disk logo and mediocre >> icon quality? >> >> /Alex >> >> >> On 22-Jun-20 11:27, Alexander Zuev wrote: >>> Hi Alexey, >>> >>> ? sorry for late responce, after fixing that initial error with the >>> wrong >>> icon sizes pulled i found a lot of corner cases that needed some >>> additional digging. >>> >>> On 18-Jun-20 20:56, Alexey Ivanov wrote: >>>> On 18/06/2020 02:30, Sergey Bylokhov wrote: >>>>> On 6/17/20 5:50 pm, Sergey Bylokhov wrote: >>>>> >>>>>> I guess it is too early to compare behavior before and after the >>>>>> fix since the fix has a few bugs. >>>>>> ??- It does not fetch several sizes, as it was expected from the >>>>>> code, but load only one native size >>>>>> and map it to the different resolutions. >>>> >>>> Yes, I re-read your message and found this mistake. >>>> I fixed it locally. >>>> >>>> Then I noticed JFileChooser does not really use the new method >>>> which returns MRI, so this explains why JFileChooser never adjusts >>>> the icons according the screen DPI. >>>> >>>> I modified Win32ShellFolder2.getIcon(boolean) to use getIcon(size) >>>> instead of getIcon(getAbsolutePath(), getLargeIcon), and now the >>>> file icons are updated when JFileChooser window is moved from >>>> standard DPI monitor to a High DPI one (150%) and back. I noticed >>>> one artefact though: the customised icons from disk drives >>>> disappeared, some file icons look clipped, on either monitor. >>> I also noticed this behavior, some icons retrieved with the >>> extractIcon method got clipped or improperly scaled. >>> I tried to dig deeper and found that it happens when >>> pIcon->GetIconLocation function returns "*" >>> as location of the resource file. I haven't found exact reason for >>> that but when this is the case then >>> getIconBits function always retrieves 32x32 icon no matter what icon >>> size we requested. >>> We then scale it down to 16x16 and the result is unpleasant. >>> I'm trying to find another way of retrieving the custom icon but for >>> now i would say that >>> for the small icons the approach of getIcon function which uses >>> SHGetFileInfo holds better results. >>> >>> So far the approach that seems to be working is to check if we have >>> a high resolution >>> icon available by requesting icon location. If icon location is not >>> known we can get both >>> low and high resolution icons from SHGetFileInfo and store them in >>> the MRI. If high res icon available >>> then fetch all the standard resolution icons and also return them as >>> MRI. >>> >>> /Alex >> > From Sergey.Bylokhov at oracle.com Mon Jul 20 15:53:40 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Mon, 20 Jul 2020 08:53:40 -0700 Subject: RFR [16] 8246248: TransferHandler.exportToClipboard prints stacktrace even if succeeded In-Reply-To: References: <70211364-2a4c-5e2e-0d28-3e285ce7b423@oracle.com> <47f3e72c-f33b-34c1-37b4-f0d62e5b02c5@oracle.com> Message-ID: <4f67ef93-2366-d7dd-3c53-a3c782197c11@oracle.com> +1 On 14.07.2020 00:01, Suman Rajkumaar Kodandarama wrote: > Dear Sergey, > > Hope you are doing fine. Sorry, for the delayed reply. > > Firstly, as the issue was observed with JPEG flavor with alpha component, I have tested with regular JPEG image (without alpha) and the image was copied onto the clipboard and no exception was thrown as expected. > > Secondly, tested with JPEG flavor with alpha, there was no JPEG flavor copied onto the clipboard as the support was removed/dropped and the IOException is thrown as expected and is logged into the logger (seen after enabling the logging). Please find the attached file for reference. Please search for the log message "WARNING: Registered service providers failed to encode". > > Also, there are datatransfer tests available which was run and there were no new failures observed. > > This fix doesn't change any of the functionalities rather, cleans up the code and logs the exception to the logger instead of printing the same on the console. > > Best Regards, > K Suman Rajkumaar > > On 09/07/2020 15:11, Sergey Bylokhov wrote: >> Hi, Suman. >> >> Is it possible to write a test case which triggers this exception and also check that >> after the fix the clipboard copy operation still works with/without alpha component. >> >> >> On 07.07.2020 07:49, Suman Rajkumaar Kodandarama wrote: >>> Hello All, >>> >>> Could you review a fix for the JDK 16, please? >>> >>> Bug: https://bugs.openjdk.java.net/browse/JDK-8246248 >>> >>> webrev: http://cr.openjdk.java.net/~dmarkov/suman/8246248/webrev.00/ >>> >>> Problem description:When copying an image with alpha component to the clipboard, IOException occurs and its stack trace is printed to the console. The IOException is thrown because JPEG flavor does not support alpha, which it has been dropped in JDK-8204187. >>> >>> Fix: Instead of printing the exception on the standard console, the fix replaces printing the stack trace of any exception that may occur while placing data to the clipboard with logging. >>> >>> Best Regards, >>> K Suman Rajkumaar >> >> -- Best regards, Sergey. From philip.race at oracle.com Mon Jul 20 16:04:36 2020 From: philip.race at oracle.com (Philip Race) Date: Mon, 20 Jul 2020 09:04:36 -0700 Subject: RFR [16] 8246248: TransferHandler.exportToClipboard prints stacktrace even if succeeded In-Reply-To: <4f67ef93-2366-d7dd-3c53-a3c782197c11@oracle.com> References: <70211364-2a4c-5e2e-0d28-3e285ce7b423@oracle.com> <47f3e72c-f33b-34c1-37b4-f0d62e5b02c5@oracle.com> <4f67ef93-2366-d7dd-3c53-a3c782197c11@oracle.com> Message-ID: <5F15C094.7090301@oracle.com> No, not approved. This fix is using sun.util from inside Java,base. We need to remove the existing cases of this usage. Not add new ones. -phil. On 7/20/20, 8:53 AM, Sergey Bylokhov wrote: > > > Firstly, as the issue was observed with JPEG flavor with alpha > component, I have tested with regular JPEG image (without alpha) and > the image was copied onto the clipboard and no exception was thrown as > expected. > > Secondly, tested with JPEG flavor with alpha, there was no JPEG flavor > copied onto the clipboard as the support was removed/dropped and the > IOException is thrown as expected and is logged into the logger (seen > after enabling the logging). Please find the attached file for > reference. Please search for the log message "WARNING: Registered > service providers failed to encode". > > Also, there are datatransfer tests available which was run and there > were no new failures observed. > > This fix doesn't change any of the functionalities rather, cleans up > the code and logs the exception to the logger instead of printing the > same on the console. > > Best Regards, > K Suman Rajkumaar From philip.race at oracle.com Mon Jul 20 22:35:47 2020 From: philip.race at oracle.com (Philip Race) Date: Mon, 20 Jul 2020 15:35:47 -0700 Subject: RFR [16] 8246248: TransferHandler.exportToClipboard prints stacktrace even if succeeded In-Reply-To: <5F15C094.7090301@oracle.com> References: <70211364-2a4c-5e2e-0d28-3e285ce7b423@oracle.com> <47f3e72c-f33b-34c1-37b4-f0d62e5b02c5@oracle.com> <4f67ef93-2366-d7dd-3c53-a3c782197c11@oracle.com> <5F15C094.7090301@oracle.com> Message-ID: <5F161C43.6070607@oracle.com> PS I also don't think statically initialising a logger even if it is never needed is a good idea. -phil. On 7/20/20, 9:04 AM, Philip Race wrote: > No, not approved. This fix is using sun.util from inside Java,base. > We need to remove the existing cases of this usage. Not add new ones. > > -phil. > > On 7/20/20, 8:53 AM, Sergey Bylokhov wrote: >> >> >> Firstly, as the issue was observed with JPEG flavor with alpha >> component, I have tested with regular JPEG image (without alpha) and >> the image was copied onto the clipboard and no exception was thrown >> as expected. >> >> Secondly, tested with JPEG flavor with alpha, there was no JPEG >> flavor copied onto the clipboard as the support was removed/dropped >> and the IOException is thrown as expected and is logged into the >> logger (seen after enabling the logging). Please find the attached >> file for reference. Please search for the log message "WARNING: >> Registered service providers failed to encode". >> >> Also, there are datatransfer tests available which was run and there >> were no new failures observed. >> >> This fix doesn't change any of the functionalities rather, cleans up >> the code and logs the exception to the logger instead of printing the >> same on the console. >> >> Best Regards, >> K Suman Rajkumaar From alexander.zuev at oracle.com Mon Jul 20 23:45:44 2020 From: alexander.zuev at oracle.com (Alexander Zuev) Date: Mon, 20 Jul 2020 16:45:44 -0700 Subject: RFR: 8212226 SurfaceManager throws "Invalid Image variant" for MultiResolutionImage (Windows) In-Reply-To: <6f2a9c6b-5b3a-d83b-f368-ebd4bd9bfeb1@oracle.com> References: <6f2a9c6b-5b3a-d83b-f368-ebd4bd9bfeb1@oracle.com> Message-ID: Hi Sergey, ? the new fix can be found here: http://cr.openjdk.java.net/~kizune/8212226/webrev.01/ ? I did exactly that - i am trying to substitute the image variant with the base image and only if it fails i'm returning false. So far i saw no regression with this approach. /Alex On 6/30/2020 5:05 PM, Sergey Bylokhov wrote: > On 6/29/20 7:37 am, Alexander Zuev wrote: >>>> It also means that if a non-primary variant will never be loaded, >>>> we still should be able to draw the default variant. >> Well - in certain cases the primary variant is not being loaded too >> which causes the same exception - >> what should we do then? There's literally nothing to show in this case. > > Right, in this case, we will return "false" since the image and its > scaled version are nor ready/loaded yet, > but we need to check that the observer passed to the method will be > called when the image will be loaded. > > On the other hand >> later in the same method when we are scaling the image for custom >> scaling factor we are checking >> if the imagepipe is ready and if not - we do return false knowing >> that this method will be called again later >> and we will be able to paint image correctly. >> And i think it is the correct way of handling such situation. I can >> in case of image not being ready try to get the >> base image from MRI - and only when IT is not ready to return fail. >> But returning fail indicating we haven't >> drawn an updated image is a way to go. > > The boolean flag in this message does not necessarily mean error > during image loading, > we may try to draw the image, but it could not fully be completed and > the observer will be called > later. > The reasons could be: > ?- The image loading is in progress, and we draw only the part of the > image > ?- Only low-quality image is drawn, so we need to redraw good quality > image later > > But from the other side, we may load the low-quality image on the > HiDPI environment > while it is not strictly necessary. I have no personal preferences for > this, so the > current fix looks fine, but please check that the observer really will > be called later > if the MRI resolution variant is not ready yet. > > > From suman.rajkumaar.kodandarama at oracle.com Tue Jul 21 08:14:51 2020 From: suman.rajkumaar.kodandarama at oracle.com (Suman Rajkumaar Kodandarama) Date: Tue, 21 Jul 2020 13:44:51 +0530 Subject: RFR [16] 8246248: TransferHandler.exportToClipboard prints stacktrace even if succeeded In-Reply-To: <5F161C43.6070607@oracle.com> References: <70211364-2a4c-5e2e-0d28-3e285ce7b423@oracle.com> <47f3e72c-f33b-34c1-37b4-f0d62e5b02c5@oracle.com> <4f67ef93-2366-d7dd-3c53-a3c782197c11@oracle.com> <5F15C094.7090301@oracle.com> <5F161C43.6070607@oracle.com> Message-ID: <3f4d4e1f-d210-e56d-62ba-bac6e4975d17@oracle.com> Dear Philip, Thank you for the review comments. AFAIK, I used the PlatformLogger which was commonly used in that module. Just to understand, 1. Is/are there any bug(s) associated in getting rid of PlatformLogger usage? 2. Is there any new logger design/development planned in the near future? 3. Any new common logger API(s) will be in place for the logging purpose in the coming days? Could you please let me know. Best Regards, K Suman Rajkumaar On 21/07/2020 04:05, Philip Race wrote: > PS I also don't think statically initialising a logger even if it is > never needed is a good idea. > > -phil. > > On 7/20/20, 9:04 AM, Philip Race wrote: >> No, not approved. This fix is using sun.util from inside Java,base. >> We need to remove the existing cases of this usage. Not add new ones. >> >> -phil. >> >> On 7/20/20, 8:53 AM, Sergey Bylokhov wrote: >>> >>> >>> Firstly, as the issue was observed with JPEG flavor with alpha >>> component, I have tested with regular JPEG image (without alpha) and >>> the image was copied onto the clipboard and no exception was thrown >>> as expected. >>> >>> Secondly, tested with JPEG flavor with alpha, there was no JPEG >>> flavor copied onto the clipboard as the support was removed/dropped >>> and the IOException is thrown as expected and is logged into the >>> logger (seen after enabling the logging). Please find the attached >>> file for reference. Please search for the log message "WARNING: >>> Registered service providers failed to encode". >>> >>> Also, there are datatransfer tests available which was run and there >>> were no new failures observed. >>> >>> This fix doesn't change any of the functionalities rather, cleans up >>> the code and logs the exception to the logger instead of printing >>> the same on the console. >>> >>> Best Regards, >>> K Suman Rajkumaar -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.zuev at oracle.com Tue Jul 21 21:33:18 2020 From: alexander.zuev at oracle.com (Alexander Zuev) Date: Tue, 21 Jul 2020 14:33:18 -0700 Subject: RFR: 8182043 Access to Windows Large Icons In-Reply-To: <8fe4149d-421a-a7b4-a069-2c735d4adb05@oracle.com> References: <6eb1f0f8-f347-0048-c531-1ef07ae3f2a9@oracle.com> <34c75ffd-08b4-5ee3-3308-2953e272f20a@oracle.com> <780f8a0c-0d65-643d-e7c6-862f0569d927@oracle.com> <1704723d-0982-e8bc-162f-32e5cd9953bb@oracle.com> <5EEA59FC.10805@oracle.com> <42309722-7820-6e47-0156-17bf03d4587f@oracle.com> <2f6c8f20-766c-39fa-d749-a022794cbcea@oracle.com> <51783cd5-d2ec-0d30-30f5-3ce8d2c7a696@oracle.com> <6958ab9d-b4b2-8012-9287-8abdcf19769c@oracle.com> <8fe4149d-421a-a7b4-a069-2c735d4adb05@oracle.com> Message-ID: Hi Alexey, ? first of all - the new and improved webrev is available at http://cr.openjdk.java.net/~kizune/8182043/webrev.03/ ? I returned the limitation of icon sizes in the result which should enhance the performance, also i fixed some corner cases and improved docuentation. More details inline. /Alex On 7/15/2020 4:46 PM, Alexey Ivanov wrote: > Hi Alexander, > > I've run some tests and this version works good. However, I noticed > the new version is slower than before, it could be due to the fact > that the entire set of icons is extracted from the native. On average, > JFileChooser is 100ms slower to show on the screen. That should be dealt with in the new patch. > > I think we should limit the number of icons that we extract as you did > in webrev.01. Done. > > If I request the icon of size 16: > FileSystemView.getFileSystemView().getSystemIcon(new File("C:\"), 16); > the resulting icon contains icon sizes 16, 24, 32, 48, 64, 72, 96, > 128, 256. > > Hardly the icon of size 96 and above will ever be used: 96px is 6 > times 16px. Getting 48px-sized icon corresponds to 300% scaling, it > may be reasonable, yet still unlikely to be used. > > Then if I request the icon of size 48: > FileSystemView.getFileSystemView().getSystemIcon(new File("C:\"), 48); > the resulting icon contains the same set of sizes. But the sizes > smaller than the base size will never be used. I believe scaling > factors less than 100% are not supported. I still tend to leave it on - it does not hurt performance much and > > So we should decide up to which resolution we get the icons. Getting > icons up to 200% makes sense. > > What about the lower limit? if the requested size matches one from our > list, nothing to decide. What if size of 33 is requested? Scaling up > 32?32 icon will likely give a better result than scaling down 48?48. That's why in my code i do keep lower resolution images and when asked about the resolution variant i'm returning closest resolution to one asked so in your case if i got asked for 33 pixel icon i will present the 32 pixel one. > > > Will such an implementation be good enough? This would resolve this > RFE: provide access to Windows large icon. > > > Then another problem which we're trying to solve: make JFileChooser > support High DPI environments. In majority of cases, JFileChooser will > use another method to extract the icon: > Win32ShellFolder2.getIcon(boolean). This function uses SHGFI_SMALLICON > or SHGFI_LARGEICON parameters to SHGetFileInfo, and therefore the size > is limited to 16?16 and 32?32. It will return the icon of the > currently configured size for the shell icon, small and large > correspondingly; however, this parameter cannot be easily changed. On > the other hand, the shell icon size takes DPI into account, and the > size of the returned icon may differ from 16 and 32. > > This situation where the size was different from the requested one was > handled by wrapping the icon into MultiResolutionIconImage: > > Win32ShellFolder2.makeIcon(long hIcon, int size) > -??????????????? return size == baseSize > -??????????????????????? ? img > -??????????????????????? : new MultiResolutionIconImage(baseSize, img); > +??????????????????????? new BufferedImage(iconSize, iconSize, > BufferedImage.TYPE_INT_ARGB); > +??????????????? img.setRGB(0, 0, iconSize, iconSize, iconBits, 0, > iconSize); > +??????????????? return img; > > The new code works well for getIcon(int size) which wraps a set of > icons into MultiResolutionIconImage. > > I think the calls to getIcon(boolean getLargeIcon) should still wrap > the result into MultiResolutionIconImage if the size differs from the > requested one. Right now the icon got wrapped in the multiresolutionimage when more than one variant is available. I can change it to wrap it every time even if the bigger or smaller variant is not available but i do not see how it can benefit the file manager itself. > > The code at > 1158???????????????? if (newIcon.getWidth(null) == s) { > 1159???????????????????? multiResolutionIcon.put(s, newIcon); > 1160???????????????? } > handles the same situation. Yet here, we'll throw away the icon if its > size is not equal to the requested one. I wonder if this condition is > ever false, however. I removed this condition for i found a corner case when it is 100% false - the dynamically generated icons in AppData/Roaming folder if promary monitor is set to any zoom factor. > To provide better support for High DPI environments in JFileChooser, > getIcon(boolean getLargeIcon) should also return a set of icons. It does right now. And result is better than it was before. > > This also applies to Win32ShellFolder2.getSystemIcon(SystemIcon > iconType) which returns standard icons for message boxes, or JOptionPane. > > >> But there's one catch: new way of retrieving icons does not get the >> custom drive >> icon (can be seen at disk C: - the windows logo identifying the >> windows system drive >> is no longer present). I am questioning myself, what is better: to >> have better icon quality >> and missing custom disk logo or to have custom disk logo and mediocre >> icon quality? > > Which is weird, but I also noticed it. > > I wonder why different APIs in Windows give different icons: > SHGetFileInfo which is used in getIcon(boolean getLargeIcon), and > IExtractIcon::GetIconLocation and IExtractIcon::Extract which are used > in getIcon(int size) that calls extractIcon(). The former function, > SHGetFileInfo, can also decorate icons with link (shortcut) overlay > whereas the latter does not seem to provide such an option. There is a way to try to get overlay for the icon but it also works inconsistently. > As for High DPI environments and memory footprint, getting icon sizes > according to the display scaling looks like an ideal solution. But it > seems too tricky. The MultiResolutionIconImage should store all the > details of the file or the shell folder to be able to fetch a > different size of DPI changes. Eventually, keeping lots of objects to > achieve that could have larger footprint than storing a set of icons > all the time. > > Overall, the current approach of fetching a set of icons to cater for > the most common scaling factors looks sensible. > > > Regards, > Alexey > > On 09/07/2020 00:21, Alexey Ivanov wrote: >> Hi Alexander, >> >> Sorry for my belated review. >> >> *FileSystemView.java* >> I couldn't build JDK because of the warning about empty

in >> javadoc for getSystemIcon(File f, int size). >> >>

is not needed before

. Yet 

should be added after each >> empty line in the javadoc to start a new paragraph, otherwise all the >> text is presented one long description. >> >> 276???? * @param size width and height of the icon in pixels to be >> scaled >> 277???? *???????????? (valid range: 1 to 256) >> >> I'd drop "to be scaled"; width and height are the base size of the >> icon for the case. >> >> >> *ShellFolder.java* >> 205????? * @param size size of the icon > 0(Valid range: 1 to 256) >> >> I recommend adding space before the opening parenthesis and use >> lower-case in the parentheses as in FileSystemView.java. >> >> >> *Win32ShellFolder2.java* >> 80???? private final static int[] ICON_RESOLUTIONS >> 81???????????? = {8, 16, 24, 32, 48, 64, 72, 96, 128, 256}; >> Shall we drop 8 from the list? The size of 8?8 is non-standard for >> Windows, is it provided by any Windows Shell interfaces? >> >> >> *Win32ShellFolder2.java* >> The trickery with newIcon2 in getIcon(final boolean getLargeIcon) is >> for getting both 16?16 and 32?32 and returning them as >> MultiResolutionImage, isn't it? >> >> I guess the best results would be if we get a list of 16?16, 24?24, >> and 32?32 icons when small icon is requested, and 32?32, 48?48, and >> 64?64 when large icon is requested, which would cover scaling factors >> of 100%, 150%, and 200%. >> >> I don't think we'll ever need small icon when large one is requested, >> and if I read the code correctly this is what would happen). However, >> JFileChooser does not seem to allow for large icons in its file view, >> thus adding the larger icon makes the rendering crispier in High DPI >> environments. >> >> 1154???????????????? if (size > 512 || size < 4) { >> 1155???????????????????? return newIcon; >> 1156???????????????? } >> I can understand that there are no useful resolutions if size of 512 >> or larger is requested. Should it be 256 or rather >> ICON_RESOLUTIONS[ICON_RESOLUTIONS.length - 1]? >> >> Javadoc states the valid range ends at 256. >> >> As for the minimum size? In my opinion, icon size less than 8 is not >> viable; on the other hand we can't make any assumptions. So if the >> requested size is less than 4, then we'll return only 8?8 icon (or >> 16?16, if 8 is dropped from the list). Do I get it right? >> >> >> *ShellFolder2.cpp* >> 981???????????? hres = pIcon->Extract(szBuf, index, &hIcon, >> &hIconLow, (16 << 16) + size); >> 982???????????? if (size < 24) { >> >> I wonder why you extract two icons, you never use both. This adds a >> delay: only one of the extracted icons is ever used. >> If the idea is to limit the size by 16, then min(16, size) passed as >> the icon size would do the trick. >> >> >> With this new version, I noticed that JFileChooser takes longer to >> appear and then longer to populate the file list. >> >> I'm still playing around with the build but I wanted to provide my >> feedback. >> >> >> Regards, >> Alexey >> >> On 29/06/2020 15:27, Alexander Zuev wrote: >>> Alexey, Sergey, >>> >>> ? here's the latest version of the fix: >>> >>> http://cr.openjdk.java.net/~kizune/8182043/webrev.02/ >>> >>> It adds one more native method - hiResIconAvailable >>> that queries if system will be able to provide high resolution icons >>> for a given file. >>> Now i have tested three approaches with the FileManager: >>> The old one - at magnification 150% can be seen here: >>> http://cr.openjdk.java.net/~kizune/8182043/example/fchooser_old_150.PNG >>> I changed the behavior by making the icon loaded by the FileChooser >>> a MultiResolutionIcon >>> carrying both small and large icons at the same time. >>> The result looks much better - here's the same view with the >>> intermediate fix: >>> http://cr.openjdk.java.net/~kizune/8182043/example/fchooser_inter_150.PNG >>> >>> But then i added the new native method and in FileChooser i'm >>> getting the multiResolutionIcon >>> for all the files for which it is possible. The result looks much >>> crisper: >>> http://cr.openjdk.java.net/~kizune/8182043/example/fchooser_new_150.PNG >>> But there's one catch: new way of retrieving icons does not get the >>> custom drive >>> icon (can be seen at disk C: - the windows logo identifying the >>> windows system drive >>> is no longer present). I am questioning myself, what is better: to >>> have better icon quality >>> and missing custom disk logo or to have custom disk logo and >>> mediocre icon quality? >>> >>> /Alex >>> >>> >>> On 22-Jun-20 11:27, Alexander Zuev wrote: >>>> Hi Alexey, >>>> >>>> ? sorry for late responce, after fixing that initial error with the >>>> wrong >>>> icon sizes pulled i found a lot of corner cases that needed some >>>> additional digging. >>>> >>>> On 18-Jun-20 20:56, Alexey Ivanov wrote: >>>>> On 18/06/2020 02:30, Sergey Bylokhov wrote: >>>>>> On 6/17/20 5:50 pm, Sergey Bylokhov wrote: >>>>>> >>>>>>> I guess it is too early to compare behavior before and after the >>>>>>> fix since the fix has a few bugs. >>>>>>> ??- It does not fetch several sizes, as it was expected from the >>>>>>> code, but load only one native size >>>>>>> and map it to the different resolutions. >>>>> >>>>> Yes, I re-read your message and found this mistake. >>>>> I fixed it locally. >>>>> >>>>> Then I noticed JFileChooser does not really use the new method >>>>> which returns MRI, so this explains why JFileChooser never adjusts >>>>> the icons according the screen DPI. >>>>> >>>>> I modified Win32ShellFolder2.getIcon(boolean) to use getIcon(size) >>>>> instead of getIcon(getAbsolutePath(), getLargeIcon), and now the >>>>> file icons are updated when JFileChooser window is moved from >>>>> standard DPI monitor to a High DPI one (150%) and back. I noticed >>>>> one artefact though: the customised icons from disk drives >>>>> disappeared, some file icons look clipped, on either monitor. >>>> I also noticed this behavior, some icons retrieved with the >>>> extractIcon method got clipped or improperly scaled. >>>> I tried to dig deeper and found that it happens when >>>> pIcon->GetIconLocation function returns "*" >>>> as location of the resource file. I haven't found exact reason for >>>> that but when this is the case then >>>> getIconBits function always retrieves 32x32 icon no matter what >>>> icon size we requested. >>>> We then scale it down to 16x16 and the result is unpleasant. >>>> I'm trying to find another way of retrieving the custom icon but >>>> for now i would say that >>>> for the small icons the approach of getIcon function which uses >>>> SHGetFileInfo holds better results. >>>> >>>> So far the approach that seems to be working is to check if we have >>>> a high resolution >>>> icon available by requesting icon location. If icon location is not >>>> known we can get both >>>> low and high resolution icons from SHGetFileInfo and store them in >>>> the MRI. If high res icon available >>>> then fetch all the standard resolution icons and also return them >>>> as MRI. >>>> >>>> /Alex >>> >> > From dkk089 at gmail.com Wed Jul 22 08:51:56 2020 From: dkk089 at gmail.com (Daniel Kamil Kozar) Date: Wed, 22 Jul 2020 10:51:56 +0200 Subject: Usage of new clipboard APIs in Windows Message-ID: Hello, AWT developers. I seem to have hit an issue with the clipboard's FlavorListener interface that's related to how this functionality is implemented in OpenJDK on Windows. Notably, the clipboard classes use the "old" clipboard monitoring API called SetClipboardViewer. Vista introduced new functions to do the same thing, called {Add,Remove}ClipboardFormatListener, and using them in my raw WinAPI test applications makes my issue go away. The issue at hand is that, when a certain application is running, the FlavorListeners attached to the clipboard object do not fire at all. My test application shows that there is no notification received from the system at all. It is important to note that, while this undoubtedly shows a bug in how the unnamed application handles clipboard messages on Windows, the same might be true with just any application (as noted in https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setclipboardviewer#remarks ). OpenJDK should thus use the new APIs in order to avoid this problem entirely. Is there any reason why OpenJDK still sticks to the old API, seeing how the oldest supported Windows version by latest OpenJDK 8 builds is Windows 7? Is there a chance that this such a change will be incorporated to OpenJDK 8, given that I provide a patch? Thanks in advance. Daniel From Sergey.Bylokhov at oracle.com Thu Jul 23 04:49:13 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Wed, 22 Jul 2020 21:49:13 -0700 Subject: RFR: 8211999 Window positioning bugs due to overlapping GraphicsDevice bounds (Windows/HiDPI) Message-ID: <2cf06130-58d8-502b-e41f-41d4c5252e31@oracle.com> Hello. Please review the fix for jdk/client. Bug: https://bugs.openjdk.java.net/browse/JDK-8211999 Fix: http://cr.openjdk.java.net/~serb/8211999/webrev.04 (Note: the fix use API available since Windows 8.1: WM_DPICHANGED, but it should be fine for Windows 7, because it does not support different DPI for different mnitors) ======================================================== Short description: In the multi-screen configurations when each screen have different DPI we calculate the bounds of each monitor by these formulas: userSpaceBounds = deviceX / scaleX, deviceY / scaleY, deviceW / scaleX, deviceH / scaleY devSpaceBounds = userX * scaleX, userY * scaleY, userW * scaleX, userH * scaleY This formula makes the next configuration completely broken: - The main screen on the left and 100% DPI - The second screen on the right and 200% DPI When we translate the bounds of the config from the device space to the user's space, the bounds of both screen overlap in the user's space, because we use bounds of the main screen as-is, and the X/Y of the second screen are divided by the scaleX/Y. Since the screens are overlapped we cannot be sure how to translate the user's space coordinates to device space in the overlapped zone. As a result => we use the wrong screen => got wrong coordinates in the device space => show top-level windows/popups/tooltips/menus/etc on the wrong screen The proposed solution for this bug is to change the formulas to these: userSpaceBounds = deviceX, deviceY, deviceW / scaleX, deviceH / scaleY devSpaceBounds = userX, userY, userW * scaleX, userH * scaleY In other words, we should not transform the X and Y coordinates of the screen. This will complicate the way of how we transform coordinates on the screen: user's <--> device spaces: Before the fix: userX = deviceX * scaleX; deviceX = userX / scaleX; After the fix(only the part appeared on the screen is scaled) userX = screenX + (deviceX - screenX) * scaleX deviceX = screenX + (userX - screenX) / scaleX Note that this new formulas are applicable only for the coordinates on the screen such as X and Y. If we will need to calculate the "size" such as W and H then the old formula should be used. The main changes for the problem above are: - Skip transformation of X and Y of the screen bounds: http://cr.openjdk.java.net/~serb/8211999/webrev.04/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsConfig.cpp.sdiff.html - A number of utility methods in java and native: http://cr.openjdk.java.net/~serb/8211999/webrev.04/src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsDevice.cpp.sdiff.html http://cr.openjdk.java.net/~serb/8211999/webrev.04/src/java.desktop/share/classes/sun/java2d/SunGraphicsEnvironment.java.sdiff.html ======================================================== Long description: Unfortunately the changes above are not enough to fix the problem when different monitors have different DPI, even if the bounds are *NOT* overlapped. - Currently when we try to set the bounds of the window, we manually convert it in "java" to the expected device position based on the current GraphicsConfiguration of the peer, and then additionally tweak it in native using the device scale stored in native code. Unfortunately this two scale might not be in sync:(after we use the GraphicsConfiguration scale in peer, the config might be changed and the tweak in native will use different screen). As a fix I have moved all transformation from the peer to the native code, it will be executed on the toolkit thread: See the change in WWindowPeer.setBounds() and awt_Window.cpp AwtWindow::Reshape http://cr.openjdk.java.net/~serb/8211999/webrev.04/src/java.desktop/windows/classes/sun/awt/windows/WWindowPeer.java.sdiff.html http://cr.openjdk.java.net/~serb/8211999/webrev.04/src/java.desktop/windows/native/libawt/windows/awt_Window.cpp.sdiff.html I think at some point we should delete all transformation in java, and apply it in the native code only. - We had a special code that tracked the dragging of the window by the user from one screen to another, and change the size of the window only when the user stop the drag operation. I've propose to use standard Windows machinery for that via WM_DPICHANGED: https://docs.microsoft.com/en-us/windows/win32/hidpi/wm-dpichanged As a result the Windows will provide a "best" windows bounds on the new screen. Note that the code have a workaround for https://bugs.openjdk.java.net/browse/JDK-8249164 - I've also fix variation of the bug previously fixed on macOS https://hg.openjdk.java.net/jdk/jdk/rev/b5cdba232fca If we try to change the position of the window, and Windows ignores this request then we need to call all "callbacks" manually, otherwise the shared code will uses the bounds ignored by the Windows. See the end of void AwtWindow::Reshape(): http://cr.openjdk.java.net/~serb/8211999/webrev.04/src/java.desktop/windows/native/libawt/windows/awt_Window.cpp.sdiff.html - Currently the HW componets such as Canvas scales everything based on such code: 770 int AwtComponent::ScaleUpX(int x) { 4771 int screen = AwtWin32GraphicsDevice::DeviceIndexForWindow(GetHWnd()); 4772 Devices::InstanceAccess devices; 4773 AwtWin32GraphicsDevice* device = devices->GetDevice(screen); 4774 return device == NULL ? x : device->ScaleUpX(x); 4775 } But it does not work well if the smaller part of the top-level window is located on one screen1(DPI=100) but the biggest part is located on the screen2(DPI=200). If the Canvas is located on the "smaller" part of the window, then the canvas will use DPI=100 for scale, but the whole window will use DPI=200 As a fix, all HW components will try to use the scale factor of the top-level window, see AwtComponent::GetScreenImOn: http://cr.openjdk.java.net/~serb/8211999/webrev.04/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp.sdiff.html - Our current implementation does not take care about the case when the HW component bounds are updated when the top-level window is moved to other screen. For example if the window does not use LayoutManager and the user set some specific bounds for the Canvas. It is expected that the size of the Canvas will be updated when the window will be moved to other screen, but only HW top-level window and Swing components will update its size. As a fix I suggest to resync the bounds of the HW components if the GraphicsCOnfiguration is changed, see WComponentPeer.syncBounds(): http://cr.openjdk.java.net/~serb/8211999/webrev.04/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java.sdiff.html - Note that the current fix is for Windows only, but the bug exists on Linux as well, so I have to create a kind of "ifdef" in the Robot class, on windows we will use the new logic, on other platforms the old logic will be used. ======================================================== Some other bugs which are not fixed. - We have a lot of places where we mix(unintentionally) the coordinate in user's space and device space. For example when we create the component we read x/y/width/height by the JNI(of course in a user's space) but pass this coordinates as-is to the ::CreateWindowEx() which is incorrect. It works currently because later we reshape the component to the correct bounds. Will fix it later. - When the frame is iconized and we try to save a new bounds for the future use, we store the coordinates in the user's space to the field which use device space: https://github.com/openjdk/jdk/blob/master/src/java.desktop/windows/native/libawt/windows/awt_Frame.cpp#L664 Probably there are some other bugs and possibility to cleanups, but I would like to do that in a separate issues. ======================================================== The tests - I have updated a couple of the tests to check multiple screen if possible, it helps to found some bugs in my initial implementation - Three new tests were added: SetComponentsBounds, SlowMotion, WindowSizeDifferentScreens - One test is moved from the closed repo(I made a small cleanup of it): ListMultipleSelectTest ======================================================== I have run jck, regression tests in a different configurations, when the main screen is on the left, up, down, right, and have different DPI such as 100, 125, 150 and 200. No new issues were found so far. The mach5 is also green, but I still investigate some common intermittent failures. PS: hope I did not forget some important information, will send it later if any. -- Best regards, Sergey. From JAYATHIRTH.D.V at ORACLE.COM Thu Jul 23 10:09:32 2020 From: JAYATHIRTH.D.V at ORACLE.COM (Jayathirth D v) Date: Thu, 23 Jul 2020 15:39:32 +0530 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> Message-ID: <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> Hi, I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. Am I missing something? Also I think this should be in awt-dev so adding the mailing list. Thanks, Jay > On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: > > PING: could you review it? > >> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ > > Yasumasa > > On 2020/07/11 17:39, Yasumasa Suenaga wrote: >> Hi all, >> Please review this change: >> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >> I investigated it, then I found out current implementation cannot handle default charset. >> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >> Thanks, >> Yasumasa From suenaga at oss.nttdata.com Thu Jul 23 12:11:08 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Thu, 23 Jul 2020 21:11:08 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> Message-ID: <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> Hi Jay, On 2020/07/23 19:09, Jayathirth D v wrote: > Hi, > > I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. > Am I missing something? OS locale may be affecting. My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. Thanks, Yasumasa > Also I think this should be in awt-dev so adding the mailing list. > > Thanks, > Jay > >> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >> >> PING: could you review it? >> >>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >> >> Yasumasa >> >> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>> Hi all, >>> Please review this change: >>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>> I investigated it, then I found out current implementation cannot handle default charset. >>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>> Thanks, >>> Yasumasa > From Sergey.Bylokhov at oracle.com Thu Jul 23 23:11:53 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Thu, 23 Jul 2020 16:11:53 -0700 Subject: Usage of new clipboard APIs in Windows In-Reply-To: References: Message-ID: <18eda0dd-299e-5397-d6ce-374f19271fbe@oracle.com> Hi, Daniel. On 22.07.2020 01:51, Daniel Kamil Kozar wrote: > Is there any reason why OpenJDK still sticks to the old API, seeing > how the oldest supported Windows version by latest OpenJDK 8 builds is > Windows 7? Is there a chance that this such a change will be > incorporated to OpenJDK 8, given that I provide a patch? The reason why the new API is not used is that nobody implemented it in AWT. I think it is fine to push such change to the mainline(currently jdk16), but the OpenJDK8u will be a different story. It is maintained on jdk8u-dev at openjdk.java.net and you should ask there about a possible backport of the fix from the mainline to OpenJDK 8u. -- Best regards, Sergey. From jayathirth.d.v at oracle.com Fri Jul 24 11:59:10 2020 From: jayathirth.d.v at oracle.com (Jayathirth D V) Date: Fri, 24 Jul 2020 04:59:10 -0700 (PDT) Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> Message-ID: Hi Yasumasa, I tried after changing the locale to Japanese but I don?t see the issue. Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. @Others : Can somebody else try to reproduce this issue? Thanks, Jay -----Original Message----- From: Yasumasa Suenaga Sent: Thursday, July 23, 2020 5:41 PM To: Jayathirth D v Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 Hi Jay, On 2020/07/23 19:09, Jayathirth D v wrote: > Hi, > > I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. > Am I missing something? OS locale may be affecting. My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. Thanks, Yasumasa > Also I think this should be in awt-dev so adding the mailing list. > > Thanks, > Jay > >> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >> >> PING: could you review it? >> >>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >> >> Yasumasa >> >> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>> Hi all, >>> Please review this change: >>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>> I investigated it, then I found out current implementation cannot handle default charset. >>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>> Thanks, >>> Yasumasa > From suenaga at oss.nttdata.com Fri Jul 24 12:59:06 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Fri, 24 Jul 2020 21:59:06 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> Message-ID: <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> Hi Jay, I share you hs_err log of this issue. `chcp` on my console shows "932" (MS932). It is Japanese locale. I can share you if you want to know. Thanks, Yasumasa On 2020/07/24 20:59, Jayathirth D V wrote: > Hi Yasumasa, > > I tried after changing the locale to Japanese but I don?t see the issue. > > Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. > > @Others : Can somebody else try to reproduce this issue? > > Thanks, > Jay > > -----Original Message----- > From: Yasumasa Suenaga > Sent: Thursday, July 23, 2020 5:41 PM > To: Jayathirth D v > Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net > Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 > > Hi Jay, > > On 2020/07/23 19:09, Jayathirth D v wrote: >> Hi, >> >> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >> Am I missing something? > > OS locale may be affecting. > > My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. > However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. > > > Thanks, > > Yasumasa > > >> Also I think this should be in awt-dev so adding the mailing list. >> >> Thanks, >> Jay >> >>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>> >>> PING: could you review it? >>> >>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>> >>> Yasumasa >>> >>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>> Hi all, >>>> Please review this change: >>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>> I investigated it, then I found out current implementation cannot handle default charset. >>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>> Thanks, >>>> Yasumasa >> -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: hs_err_pid8004.log URL: From Sergey.Bylokhov at oracle.com Fri Jul 24 21:28:45 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Fri, 24 Jul 2020 14:28:45 -0700 Subject: RFR: 8212226 SurfaceManager throws "Invalid Image variant" for MultiResolutionImage (Windows) In-Reply-To: References: <6f2a9c6b-5b3a-d83b-f368-ebd4bd9bfeb1@oracle.com> Message-ID: <633b39d0-7198-f0bd-3ff6-59dcdcfcb068@oracle.com> Hi, Alexander. I am not sure that access to default resolution via index "0" is the right thing to do: - Default resolution is not necessary located as a first image, for example in the BaseMultiResolutionImage it is possible to specify the index of the base image. - To access the image by the index you will need to call getResolutionVariants, which will load all resolution variants even if most of them are unusable. I think it is better to call: getResolutionVariant(width, height); since the default resolution has the same size as the image itself. Do you have a chance to create a small test for this use case? I think it will be useful. On 20.07.2020 16:45, Alexander Zuev wrote: > Hi Sergey, > > ? the new fix can be found here: http://cr.openjdk.java.net/~kizune/8212226/webrev.01/ > > ? I did exactly that - i am trying to substitute the image variant with the base image and only if it > fails i'm returning false. So far i saw no regression with this approach. > > /Alex > > On 6/30/2020 5:05 PM, Sergey Bylokhov wrote: >> On 6/29/20 7:37 am, Alexander Zuev wrote: >>>>> It also means that if a non-primary variant will never be loaded, we still should be able to draw the default variant. >>> Well - in certain cases the primary variant is not being loaded too which causes the same exception - >>> what should we do then? There's literally nothing to show in this case. >> >> Right, in this case, we will return "false" since the image and its scaled version are nor ready/loaded yet, >> but we need to check that the observer passed to the method will be called when the image will be loaded. >> >> On the other hand >>> later in the same method when we are scaling the image for custom scaling factor we are checking >>> if the imagepipe is ready and if not - we do return false knowing that this method will be called again later >>> and we will be able to paint image correctly. >>> And i think it is the correct way of handling such situation. I can in case of image not being ready try to get the >>> base image from MRI - and only when IT is not ready to return fail. But returning fail indicating we haven't >>> drawn an updated image is a way to go. >> >> The boolean flag in this message does not necessarily mean error during image loading, >> we may try to draw the image, but it could not fully be completed and the observer will be called >> later. >> The reasons could be: >> ?- The image loading is in progress, and we draw only the part of the image >> ?- Only low-quality image is drawn, so we need to redraw good quality image later >> >> But from the other side, we may load the low-quality image on the HiDPI environment >> while it is not strictly necessary. I have no personal preferences for this, so the >> current fix looks fine, but please check that the observer really will be called later >> if the MRI resolution variant is not ready yet. >> >> >> > -- Best regards, Sergey. From philip.race at oracle.com Mon Jul 27 15:02:46 2020 From: philip.race at oracle.com (Philip Race) Date: Mon, 27 Jul 2020 08:02:46 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> Message-ID: <5F1EEC96.5020509@oracle.com> Hi, You're avoiding a crash but I don't yet know what *exactly* caused the crash. Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. This just starts it and something bad presumably happens later in native code. And I don't yet understand why (we think) this started happening when some additional fonts were added to the file. Knowing exactly what is wrong will help decide if this is the right fix. -phil On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: > Hi Jay, > > I share you hs_err log of this issue. > `chcp` on my console shows "932" (MS932). It is Japanese locale. > > I can share you if you want to know. > > > Thanks, > > Yasumasa > > > On 2020/07/24 20:59, Jayathirth D V wrote: >> Hi Yasumasa, >> >> I tried after changing the locale to Japanese but I don?t see the issue. >> >> Also tried to reproduce the issue by enabling/disabling setting >> "Beta:Use Unicode UTF-8 for worldwide language support" in my locale >> setting. >> >> @Others : Can somebody else try to reproduce this issue? >> >> Thanks, >> Jay >> >> -----Original Message----- >> From: Yasumasa Suenaga >> Sent: Thursday, July 23, 2020 5:41 PM >> To: Jayathirth D v >> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible >> crashed with -Dfile.encoding=UTF-8 >> >> Hi Jay, >> >> On 2020/07/23 19:09, Jayathirth D v wrote: >>> Hi, >>> >>> I tried reproducing the issue in my Windows 10 machine with UTF-8 >>> encoding and test file mentioned in the bug, I don?t see any crash. >>> Am I missing something? >> >> OS locale may be affecting. >> >> My laptop has been set Japanese (CP932 / Windows-31J), so >> WFontConfiguration attempt to find Japanese font by default. >> However WFontConfiguration cannot find out the font of >> "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >> >> >> Thanks, >> >> Yasumasa >> >> >>> Also I think this should be in awt-dev so adding the mailing list. >>> >>> Thanks, >>> Jay >>> >>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga >>>> wrote: >>>> >>>> PING: could you review it? >>>> >>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>> webrev: >>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>> >>>> Yasumasa >>>> >>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>> Hi all, >>>>> Please review this change: >>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>> webrev: >>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>> I tried to run Sample.java in JDK-8236161 with >>>>> -Dfile.encoding=UTF-8, but JVM crashed due to internal error on >>>>> fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>> I investigated it, then I found out current implementation cannot >>>>> handle default charset. >>>>> If charset is set to UTF-8, it would be handled as >>>>> "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it >>>>> does not affect native font name, so we cannot find valid font. >>>>> This change has passed all tests on submit repo >>>>> (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>> Thanks, >>>>> Yasumasa >>> From suenaga at oss.nttdata.com Mon Jul 27 22:50:10 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Tue, 28 Jul 2020 07:50:10 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <5F1EEC96.5020509@oracle.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> Message-ID: <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> Hi Phil, I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. I can share minidump for further investigation. What should I do / share? Thanks, Yasumasa On 2020/07/28 0:02, Philip Race wrote: > Hi, > > You're avoiding a crash but I don't yet know what *exactly* caused the crash. > Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. > This just starts it and something bad presumably happens later in native code. > > And I don't yet understand why (we think) this started happening when some > additional fonts were added to the file. > > Knowing exactly what is wrong will help decide if this is the right fix. > > -phil > > On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >> Hi Jay, >> >> I share you hs_err log of this issue. >> `chcp` on my console shows "932" (MS932). It is Japanese locale. >> >> I can share you if you want to know. >> >> >> Thanks, >> >> Yasumasa >> >> >> On 2020/07/24 20:59, Jayathirth D V wrote: >>> Hi Yasumasa, >>> >>> I tried after changing the locale to Japanese but I don?t see the issue. >>> >>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>> >>> @Others : Can somebody else try to reproduce this issue? >>> >>> Thanks, >>> Jay >>> >>> -----Original Message----- >>> From: Yasumasa Suenaga >>> Sent: Thursday, July 23, 2020 5:41 PM >>> To: Jayathirth D v >>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>> >>> Hi Jay, >>> >>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>> Hi, >>>> >>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>> Am I missing something? >>> >>> OS locale may be affecting. >>> >>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>>> Also I think this should be in awt-dev so adding the mailing list. >>>> >>>> Thanks, >>>> Jay >>>> >>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>> >>>>> PING: could you review it? >>>>> >>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>> >>>>> Yasumasa >>>>> >>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>> Hi all, >>>>>> Please review this change: >>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>> Thanks, >>>>>> Yasumasa >>>> From philip.race at oracle.com Tue Jul 28 00:34:17 2020 From: philip.race at oracle.com (Philip Race) Date: Mon, 27 Jul 2020 17:34:17 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> Message-ID: This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update and I found it could happen with the previous? version if we just remove "devanagari" from this line in the OLD version. sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol Removing that mimics what happened in the new version and is the first piece of the puzzle. I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were not there as one of the "core fonts" for UTF-8.ja Then in WFontConfiguration.initTables() a few things happen first this subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); [for devanagari JDK specifies the Mangal font.] the subsetEncodinging map has this for Japanese subsetEncodingMap.put("japanese", "windows-31j"); then this for UTF-8 for textInputCharset }else if ("UTF-8".equals(defaultEncoding)) { textInputCharset ="DEFAULT_CHARSET"; whereas for the old ms932/windows-31j code page we would have had this }else if ("windows-31j".equals(defaultEncoding)) { textInputCharset ="SHIFTJIS_CHARSET"; it then calls makeAWTFontName("MS Gothic", "japanese"); which looks like this : WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { String windowsCharset = subsetCharsetMap.get(characterSubsetName); if (windowsCharset ==null) { windowsCharset ="DEFAULT_CHARSET"; } return platformFontName +"," + windowsCharset; } For "japanese", the result of subsetCharsetMap.get(characterSubsetName); will always be"SHIFTJIS_CHARSET" So the method will return "MS Gothic,SHIFTJIS_CHARSET" and this will get stored in the FontDescriptor The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. When in the old fontconfig file is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. It has this line String fontName = findFontWithCharset(fontDescriptors, textInputCharset); from above we know that for UTF-8 : textInputCharset ="DEFAULT_CHARSET"; but as just noted above there are NO fonts tagged with that So the look up fails. The code retries : - if (fontName ==null) { fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); } but that was pointless since DEFAULT_CHARSET is what was already tried. Now back to the windows-31j locale, there we had textInputCharset ="SHIFTJIS_CHARSET"; so that finds the match "MS Gothic,SHIFTJIS_CHARSET". ?getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the native font structs uninitialised and ready to cause a crash. That's the kind of analysis I was hoping for ! Now, the question is, is what you propose the right fix for this ? But I am not sure it can even work. 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: > Hi Phil, > > I confirmed WFontConfiguration::findFontWithCharset cannot find if > -Dfile.encoding=UTF-8 is passed. > I guess one of the cause is the definitions in > make/data/fontconfig/windows.fontconfig.properties, but also > DEFAULT_CHARSET does not work at this point. > > If we do not pass -Dfile.encoding=UTF-8, `charset` in > WFontConfiguration::findFontWithCharset is set to "windows-31j" and it > can find out valid font when Windows is set to Japanese locale. > > I can share minidump for further investigation. What should I do / share? > > > Thanks, > > Yasumasa > > > On 2020/07/28 0:02, Philip Race wrote: >> Hi, >> >> You're avoiding a crash but I don't yet know what *exactly* caused >> the crash. >> Some Java code not handling DEFAULT_CHARSET is obviously not the >> exact cause. >> This just starts it and something bad presumably happens later in >> native code. >> >> And I don't yet understand why (we think) this started happening when >> some >> additional fonts were added to the file. >> >> Knowing exactly what is wrong will help decide if this is the right fix. >> >> -phil >> >> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>> Hi Jay, >>> >>> I share you hs_err log of this issue. >>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>> >>> I can share you if you want to know. >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>> Hi Yasumasa, >>>> >>>> I tried after changing the locale to Japanese but I don?t see the >>>> issue. >>>> >>>> Also tried to reproduce the issue by enabling/disabling setting >>>> "Beta:Use Unicode UTF-8 for worldwide language support" in my >>>> locale setting. >>>> >>>> @Others : Can somebody else try to reproduce this issue? >>>> >>>> Thanks, >>>> Jay >>>> >>>> -----Original Message----- >>>> From: Yasumasa Suenaga >>>> Sent: Thursday, July 23, 2020 5:41 PM >>>> To: Jayathirth D v >>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: >>>> JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>> >>>> Hi Jay, >>>> >>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>> Hi, >>>>> >>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 >>>>> encoding and test file mentioned in the bug, I don?t see any crash. >>>>> Am I missing something? >>>> >>>> OS locale may be affecting. >>>> >>>> My laptop has been set Japanese (CP932 / Windows-31J), so >>>> WFontConfiguration attempt to find Japanese font by default. >>>> However WFontConfiguration cannot find out the font of >>>> "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>> >>>> >>>> Thanks, >>>> >>>> Yasumasa >>>> >>>> >>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>> >>>>> Thanks, >>>>> Jay >>>>> >>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga >>>>>> wrote: >>>>>> >>>>>> PING: could you review it? >>>>>> >>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>> ??? webrev: >>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>> Hi all, >>>>>>> Please review this change: >>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>> ??? webrev: >>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>> I tried to run Sample.java in JDK-8236161 with >>>>>>> -Dfile.encoding=UTF-8, but JVM crashed due to internal error on >>>>>>> fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>> I investigated it, then I found out current implementation >>>>>>> cannot handle default charset. >>>>>>> If charset is set to UTF-8, it would be handled as >>>>>>> "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it >>>>>>> does not affect native font name, so we cannot find valid font. >>>>>>> This change has passed all tests on submit repo >>>>>>> (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>> Thanks, >>>>>>> Yasumasa >>>>> -------------- next part -------------- An HTML attachment was scrubbed... URL: From philip.race at oracle.com Tue Jul 28 06:15:45 2020 From: philip.race at oracle.com (Philip Race) Date: Mon, 27 Jul 2020 23:15:45 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> Message-ID: I do see some case when default is being returned. subsetEncodingMap.put("alphabetic", "default"); which then needs an alphabetic font as part of the core script sequence. Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. So instead of your fix, just add this there : if (fontName ==null) { if (fontDescriptors.length >0) { return fontDescriptors[0].getNativeName(); }else { fontName ="Arial,ANSI_CHARSET"; } } Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. On 7/27/2020 5:34 PM, Philip Race wrote: > This did start when we updated the fontconfiguration file but I think > there was nothing wrong with the update > and I found it could happen with the previous? version if we just > remove "devanagari" from this line in the OLD version. > > sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol > > Removing that mimics what happened in the new version and is the first > piece of the puzzle. > > I don't know why devanagari is even there. Possibly it is because that > line was derived from this one :- > sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol > since hindi was the first UTF-8 locale that was supported and someone > just edited it to create the JA entry. > > But it indicates to me that this is quite fragile and could easily > have crashed a long time ago if Devanagari were > not there as one of the "core fonts" for UTF-8.ja > > Then in WFontConfiguration.initTables() a few things happen > > first this > subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); > subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); > > [for devanagari JDK specifies the Mangal font.] > > the subsetEncodinging map has this for Japanese > subsetEncodingMap.put("japanese", "windows-31j"); > > then this for UTF-8 for textInputCharset > }else if ("UTF-8".equals(defaultEncoding)) { > textInputCharset ="DEFAULT_CHARSET"; > > whereas for the old ms932/windows-31j code page we would have had this > > }else if ("windows-31j".equals(defaultEncoding)) { > textInputCharset ="SHIFTJIS_CHARSET"; > > it then calls makeAWTFontName("MS Gothic", "japanese"); > which looks like this : > > WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { > String windowsCharset = subsetCharsetMap.get(characterSubsetName); > if (windowsCharset ==null) { > windowsCharset ="DEFAULT_CHARSET"; > } > return platformFontName +"," + windowsCharset; > } > > For "japanese", the result of > subsetCharsetMap.get(characterSubsetName); > > will always be"SHIFTJIS_CHARSET" > > So the method will return "MS Gothic,SHIFTJIS_CHARSET" > and this will get stored in the FontDescriptor > > The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. > > When in the old fontconfig file is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". > > Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. > > This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. > > It has this line > String fontName = findFontWithCharset(fontDescriptors, textInputCharset); > > from above we know that for UTF-8 : > textInputCharset ="DEFAULT_CHARSET"; > > but as just noted above there are NO fonts tagged with that > > So the look up fails. The code retries : - > if (fontName ==null) { > fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); > } > > but that was pointless since DEFAULT_CHARSET is what was already tried. > > Now back to the windows-31j locale, there we had > > textInputCharset ="SHIFTJIS_CHARSET"; > > so that finds the match "MS Gothic,SHIFTJIS_CHARSET". > > ?getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the > native font structs uninitialised and ready to cause a crash. > > That's the kind of analysis I was hoping for ! > > Now, the question is, is what you propose the right fix for this ? > But I am not sure it can even work. > > 931 descriptors[i] = new FontDescriptor(awtFontName, enc, > exclusionRanges, encoding.equals("default")); seems like it will never > pass true in my testing. Then the whole fix falls apart. Can you show > some evidence ? -phil > > > On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >> Hi Phil, >> >> I confirmed WFontConfiguration::findFontWithCharset cannot find if >> -Dfile.encoding=UTF-8 is passed. >> I guess one of the cause is the definitions in >> make/data/fontconfig/windows.fontconfig.properties, but also >> DEFAULT_CHARSET does not work at this point. >> >> If we do not pass -Dfile.encoding=UTF-8, `charset` in >> WFontConfiguration::findFontWithCharset is set to "windows-31j" and >> it can find out valid font when Windows is set to Japanese locale. >> >> I can share minidump for further investigation. What should I do / >> share? >> >> >> Thanks, >> >> Yasumasa >> >> >> On 2020/07/28 0:02, Philip Race wrote: >>> Hi, >>> >>> You're avoiding a crash but I don't yet know what *exactly* caused >>> the crash. >>> Some Java code not handling DEFAULT_CHARSET is obviously not the >>> exact cause. >>> This just starts it and something bad presumably happens later in >>> native code. >>> >>> And I don't yet understand why (we think) this started happening >>> when some >>> additional fonts were added to the file. >>> >>> Knowing exactly what is wrong will help decide if this is the right >>> fix. >>> >>> -phil >>> >>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>> Hi Jay, >>>> >>>> I share you hs_err log of this issue. >>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>> >>>> I can share you if you want to know. >>>> >>>> >>>> Thanks, >>>> >>>> Yasumasa >>>> >>>> >>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>> Hi Yasumasa, >>>>> >>>>> I tried after changing the locale to Japanese but I don?t see the >>>>> issue. >>>>> >>>>> Also tried to reproduce the issue by enabling/disabling setting >>>>> "Beta:Use Unicode UTF-8 for worldwide language support" in my >>>>> locale setting. >>>>> >>>>> @Others : Can somebody else try to reproduce this issue? >>>>> >>>>> Thanks, >>>>> Jay >>>>> >>>>> -----Original Message----- >>>>> From: Yasumasa Suenaga >>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>> To: Jayathirth D v >>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: >>>>> JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>> >>>>> Hi Jay, >>>>> >>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>> Hi, >>>>>> >>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 >>>>>> encoding and test file mentioned in the bug, I don?t see any crash. >>>>>> Am I missing something? >>>>> >>>>> OS locale may be affecting. >>>>> >>>>> My laptop has been set Japanese (CP932 / Windows-31J), so >>>>> WFontConfiguration attempt to find Japanese font by default. >>>>> However WFontConfiguration cannot find out the font of >>>>> "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>> >>>>>> Thanks, >>>>>> Jay >>>>>> >>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga >>>>>>> wrote: >>>>>>> >>>>>>> PING: could you review it? >>>>>>> >>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>> ??? webrev: >>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>> Hi all, >>>>>>>> Please review this change: >>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>> ??? webrev: >>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>> I tried to run Sample.java in JDK-8236161 with >>>>>>>> -Dfile.encoding=UTF-8, but JVM crashed due to internal error on >>>>>>>> fastdebug VM. I saw same call stack with JDK-8236161 in hs_err >>>>>>>> log. >>>>>>>> I investigated it, then I found out current implementation >>>>>>>> cannot handle default charset. >>>>>>>> If charset is set to UTF-8, it would be handled as >>>>>>>> "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it >>>>>>>> does not affect native font name, so we cannot find valid font. >>>>>>>> This change has passed all tests on submit repo >>>>>>>> (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>> Thanks, >>>>>>>> Yasumasa >>>>>> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From alexander.zuev at oracle.com Tue Jul 28 06:43:11 2020 From: alexander.zuev at oracle.com (Alexander Zuev) Date: Mon, 27 Jul 2020 23:43:11 -0700 Subject: RFR: 8212226 SurfaceManager throws "Invalid Image variant" for MultiResolutionImage (Windows) In-Reply-To: <633b39d0-7198-f0bd-3ff6-59dcdcfcb068@oracle.com> References: <6f2a9c6b-5b3a-d83b-f368-ebd4bd9bfeb1@oracle.com> <633b39d0-7198-f0bd-3ff6-59dcdcfcb068@oracle.com> Message-ID: <88a25554-2712-0d1a-f008-f78b63fee67e@oracle.com> Hi, ? you right - my memory played tricks on me, there was a method that says first image in a set is considered a base image - i believe that was one of the constructors of the BaseMultiResolutionImage and that somewhat settled in my head. Yes, calling getResolutionVariant() is the right thing to do. See updated webrev at http://cr.openjdk.java.net/~kizune/8212226/webrev.02/ ? As for the test i have a manual test that i use to reproduce the situation but i am not sure i can make the automated test case - the configuration required is quite unique. I tried to play with the setting that manages the magnification factor but changing it does not trigger the bug. /Alex On 7/24/2020 2:28 PM, Sergey Bylokhov wrote: > Hi, Alexander. > > I am not sure that access to default resolution via index "0" is the > right thing to do: > > ?- Default resolution is not necessary located as a first image, for > example in > ?? the BaseMultiResolutionImage it is possible to specify the index of > the base image. > ?- To access the image by the index you will need to call > getResolutionVariants, which > ?? will load all resolution variants even if most of them are unusable. > > I think it is better to call: getResolutionVariant(width, height); > since the default resolution > has the same size as the image itself. > > Do you have a chance to create a small test for this use case? I think > it will be useful. > > > On 20.07.2020 16:45, Alexander Zuev wrote: >> Hi Sergey, >> >> ?? the new fix can be found here: >> http://cr.openjdk.java.net/~kizune/8212226/webrev.01/ >> >> ?? I did exactly that - i am trying to substitute the image variant >> with the base image and only if it >> fails i'm returning false. So far i saw no regression with this >> approach. >> >> /Alex >> >> On 6/30/2020 5:05 PM, Sergey Bylokhov wrote: >>> On 6/29/20 7:37 am, Alexander Zuev wrote: >>>>>> It also means that if a non-primary variant will never be loaded, >>>>>> we still should be able to draw the default variant. >>>> Well - in certain cases the primary variant is not being loaded too >>>> which causes the same exception - >>>> what should we do then? There's literally nothing to show in this >>>> case. >>> >>> Right, in this case, we will return "false" since the image and its >>> scaled version are nor ready/loaded yet, >>> but we need to check that the observer passed to the method will be >>> called when the image will be loaded. >>> >>> On the other hand >>>> later in the same method when we are scaling the image for custom >>>> scaling factor we are checking >>>> if the imagepipe is ready and if not - we do return false knowing >>>> that this method will be called again later >>>> and we will be able to paint image correctly. >>>> And i think it is the correct way of handling such situation. I can >>>> in case of image not being ready try to get the >>>> base image from MRI - and only when IT is not ready to return fail. >>>> But returning fail indicating we haven't >>>> drawn an updated image is a way to go. >>> >>> The boolean flag in this message does not necessarily mean error >>> during image loading, >>> we may try to draw the image, but it could not fully be completed >>> and the observer will be called >>> later. >>> The reasons could be: >>> ?- The image loading is in progress, and we draw only the part of >>> the image >>> ?- Only low-quality image is drawn, so we need to redraw good >>> quality image later >>> >>> But from the other side, we may load the low-quality image on the >>> HiDPI environment >>> while it is not strictly necessary. I have no personal preferences >>> for this, so the >>> current fix looks fine, but please check that the observer really >>> will be called later >>> if the MRI resolution variant is not ready yet. >>> >>> >>> >> > > From suenaga at oss.nttdata.com Tue Jul 28 09:21:01 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Tue, 28 Jul 2020 18:21:01 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> Message-ID: Hi Phil Thank you so much for further investigation! Your change works fine on my Windows which is set to Japanese locale. However I wonder the meanings of "DEFAULT_CHARSET". It does not appear to be working, right? To my understand, alphabetic font should be used if "DEFAULT_CHARSET" is chosen. (So I think your change may be chosen "Arial,ANSI_CHARSET") Thus I think we can fix as below: ``` diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 18:08:06 2020 +0900 @@ -165,6 +165,9 @@ private String findFontWithCharset(FontDescriptor[] fontDescriptors, String charset) { String fontName = null; + if (charset.equals("DEFAULT_CHARSET")) { + charset = "ANSI_CHARSET"; + } for (int i = 0; i < fontDescriptors.length; i++) { String componentFontName = fontDescriptors[i].getNativeName(); if (componentFontName.endsWith(charset)) { ``` The following code is pointless as you said, so I agree with you to remove it. >> if (fontName ==null) { >> fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >> } Thanks, Yasumasa On 2020/07/28 15:15, Philip Race wrote: > I do see some case when default is being returned. > > subsetEncodingMap.put("alphabetic", "default"); > > which then needs an alphabetic font as part of the core script sequence. > Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. > So instead of your fix, just add this there : > > if (fontName ==null) { > if (fontDescriptors.length >0) { > return fontDescriptors[0].getNativeName(); > }else { > fontName ="Arial,ANSI_CHARSET"; > } > } > > Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. > On 7/27/2020 5:34 PM, Philip Race wrote: >> This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update >> and I found it could happen with the previous? version if we just remove "devanagari" from this line in the OLD version. >> >> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >> >> Removing that mimics what happened in the new version and is the first piece of the puzzle. >> >> I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- >> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >> since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. >> >> But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were >> not there as one of the "core fonts" for UTF-8.ja >> >> Then in WFontConfiguration.initTables() a few things happen >> >> first this >> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >> >> [for devanagari JDK specifies the Mangal font.] >> >> the subsetEncodinging map has this for Japanese >> subsetEncodingMap.put("japanese", "windows-31j"); >> >> then this for UTF-8 for textInputCharset >> }else if ("UTF-8".equals(defaultEncoding)) { >> textInputCharset ="DEFAULT_CHARSET"; >> >> whereas for the old ms932/windows-31j code page we would have had this >> >> }else if ("windows-31j".equals(defaultEncoding)) { >> textInputCharset ="SHIFTJIS_CHARSET"; >> >> it then calls makeAWTFontName("MS Gothic", "japanese"); >> which looks like this : >> >> WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { >> String windowsCharset = subsetCharsetMap.get(characterSubsetName); >> if (windowsCharset ==null) { >> windowsCharset ="DEFAULT_CHARSET"; >> } >> return platformFontName +"," + windowsCharset; >> } >> >> For "japanese", the result of >> subsetCharsetMap.get(characterSubsetName); >> >> will always be"SHIFTJIS_CHARSET" >> >> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >> and this will get stored in the FontDescriptor >> >> The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. >> >> When in the old fontconfig file is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". >> >> Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. >> >> This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. >> >> It has this line >> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >> >> from above we know that for UTF-8 : >> textInputCharset ="DEFAULT_CHARSET"; >> >> but as just noted above there are NO fonts tagged with that >> >> So the look up fails. The code retries : - >> if (fontName ==null) { >> fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >> } >> >> but that was pointless since DEFAULT_CHARSET is what was already tried. >> >> Now back to the windows-31j locale, there we had >> >> textInputCharset ="SHIFTJIS_CHARSET"; >> >> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >> >> ?getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the >> native font structs uninitialised and ready to cause a crash. >> >> That's the kind of analysis I was hoping for ! >> >> Now, the question is, is what you propose the right fix for this ? >> But I am not sure it can even work. >> >> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil >> >> >> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>> Hi Phil, >>> >>> I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. >>> I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. >>> >>> If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. >>> >>> I can share minidump for further investigation. What should I do / share? >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>> On 2020/07/28 0:02, Philip Race wrote: >>>> Hi, >>>> >>>> You're avoiding a crash but I don't yet know what *exactly* caused the crash. >>>> Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. >>>> This just starts it and something bad presumably happens later in native code. >>>> >>>> And I don't yet understand why (we think) this started happening when some >>>> additional fonts were added to the file. >>>> >>>> Knowing exactly what is wrong will help decide if this is the right fix. >>>> >>>> -phil >>>> >>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>> Hi Jay, >>>>> >>>>> I share you hs_err log of this issue. >>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>> >>>>> I can share you if you want to know. >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>> Hi Yasumasa, >>>>>> >>>>>> I tried after changing the locale to Japanese but I don?t see the issue. >>>>>> >>>>>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>>>>> >>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>> >>>>>> Thanks, >>>>>> Jay >>>>>> >>>>>> -----Original Message----- >>>>>> From: Yasumasa Suenaga >>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>> To: Jayathirth D v >>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>> >>>>>> Hi Jay, >>>>>> >>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>> Hi, >>>>>>> >>>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>>>>> Am I missing something? >>>>>> >>>>>> OS locale may be affecting. >>>>>> >>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>>>>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>> >>>>>>> Thanks, >>>>>>> Jay >>>>>>> >>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>>>>> >>>>>>>> PING: could you review it? >>>>>>>> >>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>> Hi all, >>>>>>>>> Please review this change: >>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>> Thanks, >>>>>>>>> Yasumasa >>>>>>> >> > From philip.race at oracle.com Tue Jul 28 14:43:48 2020 From: philip.race at oracle.com (Philip Race) Date: Tue, 28 Jul 2020 07:43:48 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> Message-ID: <5F2039A4.6040807@oracle.com> 1) You assume there is a font with ANSI_CHARSET in the list. I thought I already tried to point out that if the entry looked like this sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol instead of the current sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol then I am not sure your fix in-line below will find anything and we'll still crash. 2) changing findFontWithCharset is still the wrong/more dangerous place to change this. You may be uninintentionally changing behaviour. My proposal won't break anything. It just finds a fall back when otherwise we'd crash. I am not sure any of the CHARSET selections matter any more when using a unicode locale. It is mainly about selecting the most appropriate font. And that isn't going to work with out more changes. At the very least we have to augment these subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); subsetEncodingMap.put("japanese", "windows-31j"); with *something like* subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); subsetEncodingMap.put("japanese-utf8", "utf-8"); and also update the fontconfig file to have sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol and lots of fontconfig change like adding sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol I haven't thought that through to see if this is exactly right but it is what is really missing IMO. However having done all of that it still doesn't change that 1) There is the possibility of a crash if not done right 2) It isn't clear that it *really matters*. And a rearchitecture of this file and the supporting code is beyond the scope of what we want to do today ... -phil On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: > Hi Phil > > Thank you so much for further investigation! > Your change works fine on my Windows which is set to Japanese locale. > > However I wonder the meanings of "DEFAULT_CHARSET". It does not appear > to be working, right? > > To my understand, alphabetic font should be used if "DEFAULT_CHARSET" > is chosen. > (So I think your change may be chosen "Arial,ANSI_CHARSET") > > Thus I think we can fix as below: > > ``` > diff -r 1a722ad6e23d > src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java > --- > a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java > Tue Jul 28 09:05:36 2020 +0200 > +++ > b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java > Tue Jul 28 18:08:06 2020 +0900 > @@ -165,6 +165,9 @@ > > private String findFontWithCharset(FontDescriptor[] > fontDescriptors, String charset) { > String fontName = null; > + if (charset.equals("DEFAULT_CHARSET")) { > + charset = "ANSI_CHARSET"; > + } > for (int i = 0; i < fontDescriptors.length; i++) { > String componentFontName = > fontDescriptors[i].getNativeName(); > if (componentFontName.endsWith(charset)) { > ``` > > The following code is pointless as you said, so I agree with you to > remove it. > >>> if (fontName ==null) { >>> fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>> } > > > Thanks, > > Yasumasa > > > On 2020/07/28 15:15, Philip Race wrote: >> I do see some case when default is being returned. >> >> subsetEncodingMap.put("alphabetic", "default"); >> >> which then needs an alphabetic font as part of the core script sequence. >> Now looking at desc.isDefaultFont() && >> charset.equals("DEFAULT_CHARSET") Perhaps that could change the >> answer in some cases you don't intend. For these UTF 8 locales there >> is nothing in the fontconfig that identifies the right font. The "ja" >> in UTF-8.ja is not connected to "japanese" in the fontconfig file. >> Something like that may be the right fix but it would be a bigger >> change. I am not sure how much it matters either. There just needs to >> be a font. In the win9x days and when AWT was an "A" lib not using >> unicode maybe. Or maybe there's still some benefit to the right font >> for the language still being set as the text component font but it is >> not happening anyway in this case and your fix won't solve that. All >> roads lead to the latin/alphabetic font here. My thinking right now >> is to just make changes in getTextComponentFontNameso it always >> returns something but only after the current code fails. >> So instead of your fix, just add this there : >> >> if (fontName ==null) { >> if (fontDescriptors.length >0) { >> return fontDescriptors[0].getNativeName(); >> }else { >> fontName ="Arial,ANSI_CHARSET"; >> } >> } >> >> Not very satisfactory but then we can remove the comment about maybe >> returning NULL. -phil. >> On 7/27/2020 5:34 PM, Philip Race wrote: >>> This did start when we updated the fontconfiguration file but I >>> think there was nothing wrong with the update >>> and I found it could happen with the previous version if we just >>> remove "devanagari" from this line in the OLD version. >>> >>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>> >>> >>> Removing that mimics what happened in the new version and is the >>> first piece of the puzzle. >>> >>> I don't know why devanagari is even there. Possibly it is because >>> that line was derived from this one :- >>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>> since hindi was the first UTF-8 locale that was supported and >>> someone just edited it to create the JA entry. >>> >>> But it indicates to me that this is quite fragile and could easily >>> have crashed a long time ago if Devanagari were >>> not there as one of the "core fonts" for UTF-8.ja >>> >>> Then in WFontConfiguration.initTables() a few things happen >>> >>> first this >>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>> >>> [for devanagari JDK specifies the Mangal font.] >>> >>> the subsetEncodinging map has this for Japanese >>> subsetEncodingMap.put("japanese", "windows-31j"); >>> >>> then this for UTF-8 for textInputCharset >>> }else if ("UTF-8".equals(defaultEncoding)) { >>> textInputCharset ="DEFAULT_CHARSET"; >>> >>> whereas for the old ms932/windows-31j code page we would have had this >>> >>> }else if ("windows-31j".equals(defaultEncoding)) { >>> textInputCharset ="SHIFTJIS_CHARSET"; >>> >>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>> which looks like this : >>> >>> WFontConfiguration.makeAWTFontName(String platformFontName, String >>> characterSubsetName) { >>> String windowsCharset = subsetCharsetMap.get(characterSubsetName); >>> if (windowsCharset ==null) { >>> windowsCharset ="DEFAULT_CHARSET"; >>> } >>> return platformFontName +"," + windowsCharset; >>> } >>> >>> For "japanese", the result of >>> subsetCharsetMap.get(characterSubsetName); >>> >>> will always be"SHIFTJIS_CHARSET" >>> >>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>> and this will get stored in the FontDescriptor >>> >>> The other core entries for Japanese map to ANSI_CHARSET and >>> SYMBOL_CHARSET. >>> >>> When in the old fontconfig file is called for "devanagari", it will >>> return "Mangal,DEFAULT_CHARSET". >>> >>> Without that, there is no DEFAULT_CHARSET mapped for any font in the >>> core Japanese fonts. >>> >>> This all becomes important when >>> WFontConfiguration.getTextComponentFontName() is called from native >>> code. >>> >>> It has this line >>> String fontName = findFontWithCharset(fontDescriptors, >>> textInputCharset); >>> >>> from above we know that for UTF-8 : >>> textInputCharset ="DEFAULT_CHARSET"; >>> >>> but as just noted above there are NO fonts tagged with that >>> >>> So the look up fails. The code retries : - >>> if (fontName ==null) { >>> fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>> } >>> but that was pointless since DEFAULT_CHARSET is what was already >>> tried. >>> >>> Now back to the windows-31j locale, there we had >>> >>> textInputCharset ="SHIFTJIS_CHARSET"; >>> >>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>> >>> getTextComponentFontName() has the comment "May return null." >>> which is true, but not very helpful to the native caller, which >>> bails out, leaving the >>> native font structs uninitialised and ready to cause a crash. >>> >>> That's the kind of analysis I was hoping for ! >>> >>> Now, the question is, is what you propose the right fix for this ? >>> But I am not sure it can even work. >>> >>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, >>> exclusionRanges, encoding.equals("default")); seems like it will >>> never pass true in my testing. Then the whole fix falls apart. Can >>> you show some evidence ? -phil >>> >>> >>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>> Hi Phil, >>>> >>>> I confirmed WFontConfiguration::findFontWithCharset cannot find if >>>> -Dfile.encoding=UTF-8 is passed. >>>> I guess one of the cause is the definitions in >>>> make/data/fontconfig/windows.fontconfig.properties, but also >>>> DEFAULT_CHARSET does not work at this point. >>>> >>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in >>>> WFontConfiguration::findFontWithCharset is set to "windows-31j" and >>>> it can find out valid font when Windows is set to Japanese locale. >>>> >>>> I can share minidump for further investigation. What should I do / >>>> share? >>>> >>>> >>>> Thanks, >>>> >>>> Yasumasa >>>> >>>> >>>> On 2020/07/28 0:02, Philip Race wrote: >>>>> Hi, >>>>> >>>>> You're avoiding a crash but I don't yet know what *exactly* caused >>>>> the crash. >>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the >>>>> exact cause. >>>>> This just starts it and something bad presumably happens later in >>>>> native code. >>>>> >>>>> And I don't yet understand why (we think) this started happening >>>>> when some >>>>> additional fonts were added to the file. >>>>> >>>>> Knowing exactly what is wrong will help decide if this is the >>>>> right fix. >>>>> >>>>> -phil >>>>> >>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>> Hi Jay, >>>>>> >>>>>> I share you hs_err log of this issue. >>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>> >>>>>> I can share you if you want to know. >>>>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>> Hi Yasumasa, >>>>>>> >>>>>>> I tried after changing the locale to Japanese but I don?t see >>>>>>> the issue. >>>>>>> >>>>>>> Also tried to reproduce the issue by enabling/disabling setting >>>>>>> "Beta:Use Unicode UTF-8 for worldwide language support" in my >>>>>>> locale setting. >>>>>>> >>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>> >>>>>>> Thanks, >>>>>>> Jay >>>>>>> >>>>>>> -----Original Message----- >>>>>>> From: Yasumasa Suenaga >>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>> To: Jayathirth D v >>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: >>>>>>> JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>> >>>>>>> Hi Jay, >>>>>>> >>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>> Hi, >>>>>>>> >>>>>>>> I tried reproducing the issue in my Windows 10 machine with >>>>>>>> UTF-8 encoding and test file mentioned in the bug, I don?t see >>>>>>>> any crash. >>>>>>>> Am I missing something? >>>>>>> >>>>>>> OS locale may be affecting. >>>>>>> >>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so >>>>>>> WFontConfiguration attempt to find Japanese font by default. >>>>>>> However WFontConfiguration cannot find out the font of >>>>>>> "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Jay >>>>>>>> >>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>> PING: could you review it? >>>>>>>>> >>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>> webrev: >>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>> >>>>>>>>> Yasumasa >>>>>>>>> >>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>> Hi all, >>>>>>>>>> Please review this change: >>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>> webrev: >>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>> I tried to run Sample.java in JDK-8236161 with >>>>>>>>>> -Dfile.encoding=UTF-8, but JVM crashed due to internal error >>>>>>>>>> on fastdebug VM. I saw same call stack with JDK-8236161 in >>>>>>>>>> hs_err log. >>>>>>>>>> I investigated it, then I found out current implementation >>>>>>>>>> cannot handle default charset. >>>>>>>>>> If charset is set to UTF-8, it would be handled as >>>>>>>>>> "DEFAULT_CHARSET" in WFontConfiguration::initTables. However >>>>>>>>>> it does not affect native font name, so we cannot find valid >>>>>>>>>> font. >>>>>>>>>> This change has passed all tests on submit repo >>>>>>>>>> (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>> Thanks, >>>>>>>>>> Yasumasa >>>>>>>> >>> >> From suenaga at oss.nttdata.com Wed Jul 29 00:35:57 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Wed, 29 Jul 2020 09:35:57 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <5F2039A4.6040807@oracle.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> <5F2039A4.6040807@oracle.com> Message-ID: <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> Hi Phil, Thanks for explanation. findFontWithCharset() does not have comments, so I cannot evaluate my proposal whether it breaks important behavior, but I almost agree with your change. However... > sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol > instead of the current > sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol > > then I am not sure your fix in-line below will find anything and we'll still crash. then isn't it dangerous "Arial.ANSI_CHARSET" is set to fontName forced? >>> if (fontName ==null) { >>> if (fontDescriptors.length >0) { >>> return fontDescriptors[0].getNativeName(); >>> }else { >>> fontName ="Arial,ANSI_CHARSET"; >>> } >>> } The direct cause of the crash which I saw is WComponentPeer::defaultFont was null. So I think we need to assertion to check WComponentPeer::defaultFont is not null as a safeguard. How about this change? ``` diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java --- a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Tue Jul 28 09:05:36 2020 +0200 +++ b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Wed Jul 29 09:32:00 2020 +0900 @@ -56,6 +56,7 @@ import java.awt.image.VolatileImage; import java.awt.peer.ComponentPeer; import java.awt.peer.ContainerPeer; +import java.util.Objects; import sun.awt.AWTAccessor; import sun.awt.PaintEventDispatcher; @@ -579,7 +580,12 @@ } // fallback default font object - static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); + static final Font defaultFont; + + static { + defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); + Objects.requireNonNull(defaultFont, "default font must not be null"); + } @Override public Graphics getGraphics() { diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Wed Jul 29 09:32:00 2020 +0900 @@ -157,9 +157,12 @@ public String getTextComponentFontName(String familyName, int style) { FontDescriptor[] fontDescriptors = getFontDescriptors(familyName, style); String fontName = findFontWithCharset(fontDescriptors, textInputCharset); - if (fontName == null) { + if ((fontName == null) && !textInputCharset.equals("DEFAULT_CHARSET")) { fontName = findFontWithCharset(fontDescriptors, "DEFAULT_CHARSET"); } + if ((fontName == null) && (fontDescriptors.length > 0)) { + fontName = fontDescriptors[0].getNativeName(); + } return fontName; } ``` Thanks, Yasumasa On 2020/07/28 23:43, Philip Race wrote: > 1) You assume there is a font with ANSI_CHARSET in the list. > I thought I already tried to point out that if the entry looked like this > > sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol > instead of the current > sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol > > then I am not sure your fix in-line below will find anything and we'll still crash. > > 2) changing findFontWithCharset is still the wrong/more dangerous place to change this. > You may be uninintentionally changing behaviour. > > My proposal won't break anything. It just finds a fall back when otherwise we'd crash. > > I am not sure any of the CHARSET selections matter any more when using a unicode locale. > It is mainly about selecting the most appropriate font. > > And that isn't going to work with out more changes. > > At the very least we have to augment these > ??????? subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); > ??????? subsetEncodingMap.put("japanese", "windows-31j"); > > with *something like* > > ??????? subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); > ??????? subsetEncodingMap.put("japanese-utf8", "utf-8"); > > and also update the fontconfig file to have > sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol > > and lots of fontconfig change like adding > sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol > > I haven't thought that through to see if this is exactly right but it is what is really missing IMO. > > However having done all of that it still doesn't change that > 1) There is the possibility of? a crash if not done right > 2) It isn't clear that it *really matters*. > > And a rearchitecture of this file and the supporting code is beyond the scope of what we want to do today ... > > -phil > > On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >> Hi Phil >> >> Thank you so much for further investigation! >> Your change works fine on my Windows which is set to Japanese locale. >> >> However I wonder the meanings of "DEFAULT_CHARSET". It does not appear to be working, right? >> >> To my understand, alphabetic font should be used if "DEFAULT_CHARSET" is chosen. >> (So I think your change may be chosen "Arial,ANSI_CHARSET") >> >> Thus I think we can fix as below: >> >> ``` >> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 18:08:06 2020 +0900 >> @@ -165,6 +165,9 @@ >> >> ???? private String findFontWithCharset(FontDescriptor[] fontDescriptors, String charset) { >> ???????? String fontName = null; >> +??????? if (charset.equals("DEFAULT_CHARSET")) { >> +??????????? charset = "ANSI_CHARSET"; >> +??????? } >> ???????? for (int i = 0; i < fontDescriptors.length; i++) { >> ???????????? String componentFontName = fontDescriptors[i].getNativeName(); >> ???????????? if (componentFontName.endsWith(charset)) { >> ``` >> >> The following code is pointless as you said, so I agree with you to remove it. >> >>>> if (fontName ==null) { >>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>> } >> >> >> Thanks, >> >> Yasumasa >> >> >> On 2020/07/28 15:15, Philip Race wrote: >>> I do see some case when default is being returned. >>> >>> subsetEncodingMap.put("alphabetic", "default"); >>> >>> which then needs an alphabetic font as part of the core script sequence. >>> Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. >>> So instead of your fix, just add this there : >>> >>> if (fontName ==null) { >>> ???? if (fontDescriptors.length >0) { >>> ?????? return fontDescriptors[0].getNativeName(); >>> ???? }else { >>> ???????? fontName ="Arial,ANSI_CHARSET"; >>> ??? } >>> } >>> >>> Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. >>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>> This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update >>>> and I found it could happen with the previous? version if we just remove "devanagari" from this line in the OLD version. >>>> >>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>> >>>> Removing that mimics what happened in the new version and is the first piece of the puzzle. >>>> >>>> I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- >>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>> since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. >>>> >>>> But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were >>>> not there as one of the "core fonts" for UTF-8.ja >>>> >>>> Then in WFontConfiguration.initTables() a few things happen >>>> >>>> first this >>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>> >>>> [for devanagari JDK specifies the Mangal font.] >>>> >>>> the subsetEncodinging map has this for Japanese >>>> ? subsetEncodingMap.put("japanese", "windows-31j"); >>>> >>>> then this for UTF-8 for textInputCharset >>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>> >>>> whereas for the old ms932/windows-31j code page we would have had this >>>> >>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>> >>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>> which looks like this : >>>> >>>> WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { >>>> ???? String windowsCharset = subsetCharsetMap.get(characterSubsetName); >>>> ???? if (windowsCharset ==null) { >>>> ???????? windowsCharset ="DEFAULT_CHARSET"; >>>> ???? } >>>> ???? return platformFontName +"," + windowsCharset; >>>> } >>>> >>>> For "japanese", the result of >>>> subsetCharsetMap.get(characterSubsetName); >>>> >>>> will always be"SHIFTJIS_CHARSET" >>>> >>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>> and this will get stored in the FontDescriptor >>>> >>>> The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. >>>> >>>> When in the old fontconfig file? is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". >>>> >>>> Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. >>>> >>>> This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. >>>> >>>> It has this line >>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>> >>>> from above we know that for UTF-8 : >>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>> >>>> but as just noted above there are NO fonts tagged with that >>>> >>>> So the look up fails. The code retries : - >>>> if (fontName ==null) { >>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>> } >>>> ? but that was pointless since DEFAULT_CHARSET is what was already tried. >>>> >>>> Now back to the windows-31j locale, there we had >>>> >>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>> >>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>> >>>> ? getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the >>>> native font structs uninitialised and ready to cause a crash. >>>> >>>> That's the kind of analysis I was hoping for ! >>>> >>>> Now, the question is, is what you propose the right fix for this ? >>>> But I am not sure it can even work. >>>> >>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil >>>> >>>> >>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>> Hi Phil, >>>>> >>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. >>>>> I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. >>>>> >>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. >>>>> >>>>> I can share minidump for further investigation. What should I do / share? >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>> Hi, >>>>>> >>>>>> You're avoiding a crash but I don't yet know what *exactly* caused the crash. >>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. >>>>>> This just starts it and something bad presumably happens later in native code. >>>>>> >>>>>> And I don't yet understand why (we think) this started happening when some >>>>>> additional fonts were added to the file. >>>>>> >>>>>> Knowing exactly what is wrong will help decide if this is the right fix. >>>>>> >>>>>> -phil >>>>>> >>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>> Hi Jay, >>>>>>> >>>>>>> I share you hs_err log of this issue. >>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>> >>>>>>> I can share you if you want to know. >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>> Hi Yasumasa, >>>>>>>> >>>>>>>> I tried after changing the locale to Japanese but I don?t see the issue. >>>>>>>> >>>>>>>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>>>>>>> >>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Jay >>>>>>>> >>>>>>>> -----Original Message----- >>>>>>>> From: Yasumasa Suenaga >>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>> To: Jayathirth D v >>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>> >>>>>>>> Hi Jay, >>>>>>>> >>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>>>>>>> Am I missing something? >>>>>>>> >>>>>>>> OS locale may be affecting. >>>>>>>> >>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>>>>>>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Jay >>>>>>>>> >>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>>>>>>> >>>>>>>>>> PING: could you review it? >>>>>>>>>> >>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>> Hi all, >>>>>>>>>>> Please review this change: >>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>>>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>>>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>> Thanks, >>>>>>>>>>> Yasumasa >>>>>>>>> >>>> >>> From philip.race at oracle.com Wed Jul 29 00:49:40 2020 From: philip.race at oracle.com (Philip Race) Date: Tue, 28 Jul 2020 17:49:40 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> <5F2039A4.6040807@oracle.com> <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> Message-ID: <5F20C7A4.2010002@oracle.com> On 7/28/20, 5:35 PM, Yasumasa Suenaga wrote: > Hi Phil, > > Thanks for explanation. > > findFontWithCharset() does not have comments, so I cannot evaluate my > proposal whether it breaks important behavior, but I almost agree with > your change. > > However... > >> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >> instead of the current >> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >> >> then I am not sure your fix in-line below will find anything and >> we'll still crash. > > then isn't it dangerous "Arial,ANSI_CHARSET" is set to fontName forced? Nope, because the problem is that we may to return anything from this method (ie return null instead). This is obviously not null so is fine. -phil. > >>>> if (fontName ==null) { >>>> if (fontDescriptors.length >0) { >>>> return fontDescriptors[0].getNativeName(); >>>> }else { >>>> fontName ="Arial,ANSI_CHARSET"; >>>> } >>>> } > > The direct cause of the crash which I saw is > WComponentPeer::defaultFont was null. > So I think we need to assertion to check WComponentPeer::defaultFont > is not null as a safeguard. > > How about this change? > > ``` > diff -r 1a722ad6e23d > src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java > --- > a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java > Tue Jul 28 09:05:36 2020 +0200 > +++ > b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java > Wed Jul 29 09:32:00 2020 +0900 > @@ -56,6 +56,7 @@ > import java.awt.image.VolatileImage; > import java.awt.peer.ComponentPeer; > import java.awt.peer.ContainerPeer; > +import java.util.Objects; > > import sun.awt.AWTAccessor; > import sun.awt.PaintEventDispatcher; > @@ -579,7 +580,12 @@ > } > > // fallback default font object > - static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, > 12); > + static final Font defaultFont; > + > + static { > + defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); > + Objects.requireNonNull(defaultFont, "default font must not be > null"); > + } > > @Override > public Graphics getGraphics() { > diff -r 1a722ad6e23d > src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java > --- > a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java > Tue Jul 28 09:05:36 2020 +0200 > +++ > b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java > Wed Jul 29 09:32:00 2020 +0900 > @@ -157,9 +157,12 @@ > public String getTextComponentFontName(String familyName, int > style) { > FontDescriptor[] fontDescriptors = > getFontDescriptors(familyName, style); > String fontName = findFontWithCharset(fontDescriptors, > textInputCharset); > - if (fontName == null) { > + if ((fontName == null) && > !textInputCharset.equals("DEFAULT_CHARSET")) { > fontName = findFontWithCharset(fontDescriptors, > "DEFAULT_CHARSET"); > } > + if ((fontName == null) && (fontDescriptors.length > 0)) { > + fontName = fontDescriptors[0].getNativeName(); > + } > return fontName; > } > > ``` > > > Thanks, > > Yasumasa > > > On 2020/07/28 23:43, Philip Race wrote: >> 1) You assume there is a font with ANSI_CHARSET in the list. >> I thought I already tried to point out that if the entry looked like >> this >> >> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >> instead of the current >> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >> >> then I am not sure your fix in-line below will find anything and >> we'll still crash. >> >> 2) changing findFontWithCharset is still the wrong/more dangerous >> place to change this. >> You may be uninintentionally changing behaviour. >> >> My proposal won't break anything. It just finds a fall back when >> otherwise we'd crash. >> >> I am not sure any of the CHARSET selections matter any more when >> using a unicode locale. >> It is mainly about selecting the most appropriate font. >> >> And that isn't going to work with out more changes. >> >> At the very least we have to augment these >> subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >> subsetEncodingMap.put("japanese", "windows-31j"); >> >> with *something like* >> >> subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >> subsetEncodingMap.put("japanese-utf8", "utf-8"); >> >> and also update the fontconfig file to have >> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >> >> and lots of fontconfig change like adding >> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >> >> I haven't thought that through to see if this is exactly right but it >> is what is really missing IMO. >> >> However having done all of that it still doesn't change that >> 1) There is the possibility of a crash if not done right >> 2) It isn't clear that it *really matters*. >> >> And a rearchitecture of this file and the supporting code is beyond >> the scope of what we want to do today ... >> >> -phil >> >> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>> Hi Phil >>> >>> Thank you so much for further investigation! >>> Your change works fine on my Windows which is set to Japanese locale. >>> >>> However I wonder the meanings of "DEFAULT_CHARSET". It does not >>> appear to be working, right? >>> >>> To my understand, alphabetic font should be used if >>> "DEFAULT_CHARSET" is chosen. >>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>> >>> Thus I think we can fix as below: >>> >>> ``` >>> diff -r 1a722ad6e23d >>> src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>> >>> --- >>> a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>> Tue Jul 28 09:05:36 2020 +0200 >>> +++ >>> b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>> Tue Jul 28 18:08:06 2020 +0900 >>> @@ -165,6 +165,9 @@ >>> >>> private String findFontWithCharset(FontDescriptor[] >>> fontDescriptors, String charset) { >>> String fontName = null; >>> + if (charset.equals("DEFAULT_CHARSET")) { >>> + charset = "ANSI_CHARSET"; >>> + } >>> for (int i = 0; i < fontDescriptors.length; i++) { >>> String componentFontName = >>> fontDescriptors[i].getNativeName(); >>> if (componentFontName.endsWith(charset)) { >>> ``` >>> >>> The following code is pointless as you said, so I agree with you to >>> remove it. >>> >>>>> if (fontName ==null) { >>>>> fontName = >>>>> findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>> } >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>> On 2020/07/28 15:15, Philip Race wrote: >>>> I do see some case when default is being returned. >>>> >>>> subsetEncodingMap.put("alphabetic", "default"); >>>> >>>> which then needs an alphabetic font as part of the core script >>>> sequence. >>>> Now looking at desc.isDefaultFont() && >>>> charset.equals("DEFAULT_CHARSET") Perhaps that could change the >>>> answer in some cases you don't intend. For these UTF 8 locales >>>> there is nothing in the fontconfig that identifies the right font. >>>> The "ja" in UTF-8.ja is not connected to "japanese" in the >>>> fontconfig file. Something like that may be the right fix but it >>>> would be a bigger change. I am not sure how much it matters either. >>>> There just needs to be a font. In the win9x days and when AWT was >>>> an "A" lib not using unicode maybe. Or maybe there's still some >>>> benefit to the right font for the language still being set as the >>>> text component font but it is not happening anyway in this case and >>>> your fix won't solve that. All roads lead to the latin/alphabetic >>>> font here. My thinking right now is to just make changes in >>>> getTextComponentFontNameso it always returns something but only >>>> after the current code fails. >>>> So instead of your fix, just add this there : >>>> >>>> if (fontName ==null) { >>>> if (fontDescriptors.length >0) { >>>> return fontDescriptors[0].getNativeName(); >>>> }else { >>>> fontName ="Arial,ANSI_CHARSET"; >>>> } >>>> } >>>> >>>> Not very satisfactory but then we can remove the comment about >>>> maybe returning NULL. -phil. >>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>> This did start when we updated the fontconfiguration file but I >>>>> think there was nothing wrong with the update >>>>> and I found it could happen with the previous version if we just >>>>> remove "devanagari" from this line in the OLD version. >>>>> >>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>> >>>>> >>>>> Removing that mimics what happened in the new version and is the >>>>> first piece of the puzzle. >>>>> >>>>> I don't know why devanagari is even there. Possibly it is because >>>>> that line was derived from this one :- >>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>> since hindi was the first UTF-8 locale that was supported and >>>>> someone just edited it to create the JA entry. >>>>> >>>>> But it indicates to me that this is quite fragile and could easily >>>>> have crashed a long time ago if Devanagari were >>>>> not there as one of the "core fonts" for UTF-8.ja >>>>> >>>>> Then in WFontConfiguration.initTables() a few things happen >>>>> >>>>> first this >>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>> >>>>> [for devanagari JDK specifies the Mangal font.] >>>>> >>>>> the subsetEncodinging map has this for Japanese >>>>> subsetEncodingMap.put("japanese", "windows-31j"); >>>>> >>>>> then this for UTF-8 for textInputCharset >>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>> textInputCharset ="DEFAULT_CHARSET"; >>>>> >>>>> whereas for the old ms932/windows-31j code page we would have had >>>>> this >>>>> >>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>> textInputCharset ="SHIFTJIS_CHARSET"; >>>>> >>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>> which looks like this : >>>>> >>>>> WFontConfiguration.makeAWTFontName(String platformFontName, String >>>>> characterSubsetName) { >>>>> String windowsCharset = >>>>> subsetCharsetMap.get(characterSubsetName); >>>>> if (windowsCharset ==null) { >>>>> windowsCharset ="DEFAULT_CHARSET"; >>>>> } >>>>> return platformFontName +"," + windowsCharset; >>>>> } >>>>> >>>>> For "japanese", the result of >>>>> subsetCharsetMap.get(characterSubsetName); >>>>> >>>>> will always be"SHIFTJIS_CHARSET" >>>>> >>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>> and this will get stored in the FontDescriptor >>>>> >>>>> The other core entries for Japanese map to ANSI_CHARSET and >>>>> SYMBOL_CHARSET. >>>>> >>>>> When in the old fontconfig file is called for "devanagari", it >>>>> will return "Mangal,DEFAULT_CHARSET". >>>>> >>>>> Without that, there is no DEFAULT_CHARSET mapped for any font in >>>>> the core Japanese fonts. >>>>> >>>>> This all becomes important when >>>>> WFontConfiguration.getTextComponentFontName() is called from >>>>> native code. >>>>> >>>>> It has this line >>>>> String fontName = findFontWithCharset(fontDescriptors, >>>>> textInputCharset); >>>>> >>>>> from above we know that for UTF-8 : >>>>> textInputCharset ="DEFAULT_CHARSET"; >>>>> >>>>> but as just noted above there are NO fonts tagged with that >>>>> >>>>> So the look up fails. The code retries : - >>>>> if (fontName ==null) { >>>>> fontName = >>>>> findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>> } >>>>> but that was pointless since DEFAULT_CHARSET is what was already >>>>> tried. >>>>> >>>>> Now back to the windows-31j locale, there we had >>>>> >>>>> textInputCharset ="SHIFTJIS_CHARSET"; >>>>> >>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>> >>>>> getTextComponentFontName() has the comment "May return null." >>>>> which is true, but not very helpful to the native caller, which >>>>> bails out, leaving the >>>>> native font structs uninitialised and ready to cause a crash. >>>>> >>>>> That's the kind of analysis I was hoping for ! >>>>> >>>>> Now, the question is, is what you propose the right fix for this ? >>>>> But I am not sure it can even work. >>>>> >>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, >>>>> exclusionRanges, encoding.equals("default")); seems like it will >>>>> never pass true in my testing. Then the whole fix falls apart. Can >>>>> you show some evidence ? -phil >>>>> >>>>> >>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>> Hi Phil, >>>>>> >>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find >>>>>> if -Dfile.encoding=UTF-8 is passed. >>>>>> I guess one of the cause is the definitions in >>>>>> make/data/fontconfig/windows.fontconfig.properties, but also >>>>>> DEFAULT_CHARSET does not work at this point. >>>>>> >>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in >>>>>> WFontConfiguration::findFontWithCharset is set to "windows-31j" >>>>>> and it can find out valid font when Windows is set to Japanese >>>>>> locale. >>>>>> >>>>>> I can share minidump for further investigation. What should I do >>>>>> / share? >>>>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>> Hi, >>>>>>> >>>>>>> You're avoiding a crash but I don't yet know what *exactly* >>>>>>> caused the crash. >>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the >>>>>>> exact cause. >>>>>>> This just starts it and something bad presumably happens later >>>>>>> in native code. >>>>>>> >>>>>>> And I don't yet understand why (we think) this started happening >>>>>>> when some >>>>>>> additional fonts were added to the file. >>>>>>> >>>>>>> Knowing exactly what is wrong will help decide if this is the >>>>>>> right fix. >>>>>>> >>>>>>> -phil >>>>>>> >>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>> Hi Jay, >>>>>>>> >>>>>>>> I share you hs_err log of this issue. >>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>>> >>>>>>>> I can share you if you want to know. >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>> Hi Yasumasa, >>>>>>>>> >>>>>>>>> I tried after changing the locale to Japanese but I don?t see >>>>>>>>> the issue. >>>>>>>>> >>>>>>>>> Also tried to reproduce the issue by enabling/disabling >>>>>>>>> setting "Beta:Use Unicode UTF-8 for worldwide language >>>>>>>>> support" in my locale setting. >>>>>>>>> >>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Jay >>>>>>>>> >>>>>>>>> -----Original Message----- >>>>>>>>> From: Yasumasa Suenaga >>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>> To: Jayathirth D v >>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: >>>>>>>>> JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>> >>>>>>>>> Hi Jay, >>>>>>>>> >>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> I tried reproducing the issue in my Windows 10 machine with >>>>>>>>>> UTF-8 encoding and test file mentioned in the bug, I don?t >>>>>>>>>> see any crash. >>>>>>>>>> Am I missing something? >>>>>>>>> >>>>>>>>> OS locale may be affecting. >>>>>>>>> >>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so >>>>>>>>> WFontConfiguration attempt to find Japanese font by default. >>>>>>>>> However WFontConfiguration cannot find out the font of >>>>>>>>> "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Yasumasa >>>>>>>>> >>>>>>>>> >>>>>>>>>> Also I think this should be in awt-dev so adding the mailing >>>>>>>>>> list. >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Jay >>>>>>>>>> >>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> PING: could you review it? >>>>>>>>>>> >>>>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>> webrev: >>>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>> >>>>>>>>>>> Yasumasa >>>>>>>>>>> >>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>> Hi all, >>>>>>>>>>>> Please review this change: >>>>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>> webrev: >>>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with >>>>>>>>>>>> -Dfile.encoding=UTF-8, but JVM crashed due to internal >>>>>>>>>>>> error on fastdebug VM. I saw same call stack with >>>>>>>>>>>> JDK-8236161 in hs_err log. >>>>>>>>>>>> I investigated it, then I found out current implementation >>>>>>>>>>>> cannot handle default charset. >>>>>>>>>>>> If charset is set to UTF-8, it would be handled as >>>>>>>>>>>> "DEFAULT_CHARSET" in WFontConfiguration::initTables. >>>>>>>>>>>> However it does not affect native font name, so we cannot >>>>>>>>>>>> find valid font. >>>>>>>>>>>> This change has passed all tests on submit repo >>>>>>>>>>>> (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Yasumasa >>>>>>>>>> >>>>> >>>> From suenaga at oss.nttdata.com Wed Jul 29 01:10:09 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Wed, 29 Jul 2020 10:10:09 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <5F20C7A4.2010002@oracle.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> <5F2039A4.6040807@oracle.com> <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> <5F20C7A4.2010002@oracle.com> Message-ID: <98367096-a1d4-9a35-5e35-3ce27b96bc5c@oss.nttdata.com> On 2020/07/29 9:49, Philip Race wrote: > > > On 7/28/20, 5:35 PM, Yasumasa Suenaga wrote: >> Hi Phil, >> >> Thanks for explanation. >> >> findFontWithCharset() does not have comments, so I cannot evaluate my proposal whether it breaks important behavior, but I almost agree with your change. >> >> However... >> >>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>> instead of the current >>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>> >>> then I am not sure your fix in-line below will find anything and we'll still crash. >> >> then isn't it dangerous "Arial,ANSI_CHARSET" is set to fontName forced? > > Nope, because the problem is that we may to return anything from this method (ie > return null instead). This is obviously not null so is fine. Ok, so how about this change? http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.01/ Yasumasa > -phil. > > >> >>>>> if (fontName ==null) { >>>>> ???? if (fontDescriptors.length >0) { >>>>> ?????? return fontDescriptors[0].getNativeName(); >>>>> ???? }else { >>>>> ???????? fontName ="Arial,ANSI_CHARSET"; >>>>> ??? } >>>>> } >> >> The direct cause of the crash which I saw is WComponentPeer::defaultFont was null. >> So I think we need to assertion to check WComponentPeer::defaultFont is not null as a safeguard. >> >> How about this change? >> >> ``` >> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >> --- a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Tue Jul 28 09:05:36 2020 +0200 >> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Wed Jul 29 09:32:00 2020 +0900 >> @@ -56,6 +56,7 @@ >> ?import java.awt.image.VolatileImage; >> ?import java.awt.peer.ComponentPeer; >> ?import java.awt.peer.ContainerPeer; >> +import java.util.Objects; >> >> ?import sun.awt.AWTAccessor; >> ?import sun.awt.PaintEventDispatcher; >> @@ -579,7 +580,12 @@ >> ???? } >> >> ???? // fallback default font object >> -??? static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >> +??? static final Font defaultFont; >> + >> +??? static { >> +??????? defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >> +??????? Objects.requireNonNull(defaultFont, "default font must not be null"); >> +??? } >> >> ???? @Override >> ???? public Graphics getGraphics() { >> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Wed Jul 29 09:32:00 2020 +0900 >> @@ -157,9 +157,12 @@ >> ???? public String getTextComponentFontName(String familyName, int style) { >> ???????? FontDescriptor[] fontDescriptors = getFontDescriptors(familyName, style); >> ???????? String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >> -??????? if (fontName == null) { >> +??????? if ((fontName == null) && !textInputCharset.equals("DEFAULT_CHARSET")) { >> ???????????? fontName = findFontWithCharset(fontDescriptors, "DEFAULT_CHARSET"); >> ???????? } >> +??????? if ((fontName == null) && (fontDescriptors.length > 0)) { >> +??????????? fontName = fontDescriptors[0].getNativeName(); >> +??????? } >> ???????? return fontName; >> ???? } >> >> ``` >> >> >> Thanks, >> >> Yasumasa >> >> >> On 2020/07/28 23:43, Philip Race wrote: >>> 1) You assume there is a font with ANSI_CHARSET in the list. >>> I thought I already tried to point out that if the entry looked like this >>> >>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>> instead of the current >>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>> >>> then I am not sure your fix in-line below will find anything and we'll still crash. >>> >>> 2) changing findFontWithCharset is still the wrong/more dangerous place to change this. >>> You may be uninintentionally changing behaviour. >>> >>> My proposal won't break anything. It just finds a fall back when otherwise we'd crash. >>> >>> I am not sure any of the CHARSET selections matter any more when using a unicode locale. >>> It is mainly about selecting the most appropriate font. >>> >>> And that isn't going to work with out more changes. >>> >>> At the very least we have to augment these >>> ???????? subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >>> ???????? subsetEncodingMap.put("japanese", "windows-31j"); >>> >>> with *something like* >>> >>> ???????? subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >>> ???????? subsetEncodingMap.put("japanese-utf8", "utf-8"); >>> >>> and also update the fontconfig file to have >>> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >>> >>> and lots of fontconfig change like adding >>> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >>> >>> I haven't thought that through to see if this is exactly right but it is what is really missing IMO. >>> >>> However having done all of that it still doesn't change that >>> 1) There is the possibility of? a crash if not done right >>> 2) It isn't clear that it *really matters*. >>> >>> And a rearchitecture of this file and the supporting code is beyond the scope of what we want to do today ... >>> >>> -phil >>> >>> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>>> Hi Phil >>>> >>>> Thank you so much for further investigation! >>>> Your change works fine on my Windows which is set to Japanese locale. >>>> >>>> However I wonder the meanings of "DEFAULT_CHARSET". It does not appear to be working, right? >>>> >>>> To my understand, alphabetic font should be used if "DEFAULT_CHARSET" is chosen. >>>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>>> >>>> Thus I think we can fix as below: >>>> >>>> ``` >>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 18:08:06 2020 +0900 >>>> @@ -165,6 +165,9 @@ >>>> >>>> ???? private String findFontWithCharset(FontDescriptor[] fontDescriptors, String charset) { >>>> ???????? String fontName = null; >>>> +??????? if (charset.equals("DEFAULT_CHARSET")) { >>>> +??????????? charset = "ANSI_CHARSET"; >>>> +??????? } >>>> ???????? for (int i = 0; i < fontDescriptors.length; i++) { >>>> ???????????? String componentFontName = fontDescriptors[i].getNativeName(); >>>> ???????????? if (componentFontName.endsWith(charset)) { >>>> ``` >>>> >>>> The following code is pointless as you said, so I agree with you to remove it. >>>> >>>>>> if (fontName ==null) { >>>>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>> } >>>> >>>> >>>> Thanks, >>>> >>>> Yasumasa >>>> >>>> >>>> On 2020/07/28 15:15, Philip Race wrote: >>>>> I do see some case when default is being returned. >>>>> >>>>> subsetEncodingMap.put("alphabetic", "default"); >>>>> >>>>> which then needs an alphabetic font as part of the core script sequence. >>>>> Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. >>>>> So instead of your fix, just add this there : >>>>> >>>>> if (fontName ==null) { >>>>> ???? if (fontDescriptors.length >0) { >>>>> ?????? return fontDescriptors[0].getNativeName(); >>>>> ???? }else { >>>>> ???????? fontName ="Arial,ANSI_CHARSET"; >>>>> ??? } >>>>> } >>>>> >>>>> Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. >>>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>>> This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update >>>>>> and I found it could happen with the previous? version if we just remove "devanagari" from this line in the OLD version. >>>>>> >>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>>> >>>>>> Removing that mimics what happened in the new version and is the first piece of the puzzle. >>>>>> >>>>>> I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- >>>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>>> since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. >>>>>> >>>>>> But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were >>>>>> not there as one of the "core fonts" for UTF-8.ja >>>>>> >>>>>> Then in WFontConfiguration.initTables() a few things happen >>>>>> >>>>>> first this >>>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>>> >>>>>> [for devanagari JDK specifies the Mangal font.] >>>>>> >>>>>> the subsetEncodinging map has this for Japanese >>>>>> ? subsetEncodingMap.put("japanese", "windows-31j"); >>>>>> >>>>>> then this for UTF-8 for textInputCharset >>>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>>>> >>>>>> whereas for the old ms932/windows-31j code page we would have had this >>>>>> >>>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>> >>>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>>> which looks like this : >>>>>> >>>>>> WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { >>>>>> ???? String windowsCharset = subsetCharsetMap.get(characterSubsetName); >>>>>> ???? if (windowsCharset ==null) { >>>>>> ???????? windowsCharset ="DEFAULT_CHARSET"; >>>>>> ???? } >>>>>> ???? return platformFontName +"," + windowsCharset; >>>>>> } >>>>>> >>>>>> For "japanese", the result of >>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>> >>>>>> will always be"SHIFTJIS_CHARSET" >>>>>> >>>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>>> and this will get stored in the FontDescriptor >>>>>> >>>>>> The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. >>>>>> >>>>>> When in the old fontconfig file? is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". >>>>>> >>>>>> Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. >>>>>> >>>>>> This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. >>>>>> >>>>>> It has this line >>>>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>> >>>>>> from above we know that for UTF-8 : >>>>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>>>> >>>>>> but as just noted above there are NO fonts tagged with that >>>>>> >>>>>> So the look up fails. The code retries : - >>>>>> if (fontName ==null) { >>>>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>> } >>>>>> ? but that was pointless since DEFAULT_CHARSET is what was already tried. >>>>>> >>>>>> Now back to the windows-31j locale, there we had >>>>>> >>>>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>> >>>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>>> >>>>>> ? getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the >>>>>> native font structs uninitialised and ready to cause a crash. >>>>>> >>>>>> That's the kind of analysis I was hoping for ! >>>>>> >>>>>> Now, the question is, is what you propose the right fix for this ? >>>>>> But I am not sure it can even work. >>>>>> >>>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil >>>>>> >>>>>> >>>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>>> Hi Phil, >>>>>>> >>>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. >>>>>>> I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. >>>>>>> >>>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. >>>>>>> >>>>>>> I can share minidump for further investigation. What should I do / share? >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>>> Hi, >>>>>>>> >>>>>>>> You're avoiding a crash but I don't yet know what *exactly* caused the crash. >>>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. >>>>>>>> This just starts it and something bad presumably happens later in native code. >>>>>>>> >>>>>>>> And I don't yet understand why (we think) this started happening when some >>>>>>>> additional fonts were added to the file. >>>>>>>> >>>>>>>> Knowing exactly what is wrong will help decide if this is the right fix. >>>>>>>> >>>>>>>> -phil >>>>>>>> >>>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>>> Hi Jay, >>>>>>>>> >>>>>>>>> I share you hs_err log of this issue. >>>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>>>> >>>>>>>>> I can share you if you want to know. >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Yasumasa >>>>>>>>> >>>>>>>>> >>>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>>> Hi Yasumasa, >>>>>>>>>> >>>>>>>>>> I tried after changing the locale to Japanese but I don?t see the issue. >>>>>>>>>> >>>>>>>>>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>>>>>>>>> >>>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Jay >>>>>>>>>> >>>>>>>>>> -----Original Message----- >>>>>>>>>> From: Yasumasa Suenaga >>>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>>> To: Jayathirth D v >>>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>>> >>>>>>>>>> Hi Jay, >>>>>>>>>> >>>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>>>>>>>>> Am I missing something? >>>>>>>>>> >>>>>>>>>> OS locale may be affecting. >>>>>>>>>> >>>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>>>>>>>>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Jay >>>>>>>>>>> >>>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>>>>>>>>> >>>>>>>>>>>> PING: could you review it? >>>>>>>>>>>> >>>>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>> >>>>>>>>>>>> Yasumasa >>>>>>>>>>>> >>>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>>> Hi all, >>>>>>>>>>>>> Please review this change: >>>>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>>>>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>>>>>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>>>>>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Yasumasa >>>>>>>>>>> >>>>>> >>>>> From philip.race at oracle.com Wed Jul 29 01:21:02 2020 From: philip.race at oracle.com (Philip Race) Date: Tue, 28 Jul 2020 18:21:02 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <98367096-a1d4-9a35-5e35-3ce27b96bc5c@oss.nttdata.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> <5F2039A4.6040807@oracle.com> <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> <5F20C7A4.2010002@oracle.com> <98367096-a1d4-9a35-5e35-3ce27b96bc5c@oss.nttdata.com> Message-ID: <5F20CEFE.80806@oracle.com> The change in WFontConfiguration looks good but I have no idea what the change in WComponentPeer is supposed to achieve. "new Font()" won't fail. And the constructor is VERY lazy. It sets fields and returns. That's all. -phil. On 7/28/20, 6:10 PM, Yasumasa Suenaga wrote: > On 2020/07/29 9:49, Philip Race wrote: >> >> >> On 7/28/20, 5:35 PM, Yasumasa Suenaga wrote: >>> Hi Phil, >>> >>> Thanks for explanation. >>> >>> findFontWithCharset() does not have comments, so I cannot evaluate >>> my proposal whether it breaks important behavior, but I almost agree >>> with your change. >>> >>> However... >>> >>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>> instead of the current >>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>> >>>> then I am not sure your fix in-line below will find anything and >>>> we'll still crash. >>> >>> then isn't it dangerous "Arial,ANSI_CHARSET" is set to fontName forced? >> >> Nope, because the problem is that we may to return anything from this >> method (ie >> return null instead). This is obviously not null so is fine. > > Ok, so how about this change? > > http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.01/ > > > Yasumasa > > >> -phil. >> >> >>> >>>>>> if (fontName ==null) { >>>>>> if (fontDescriptors.length >0) { >>>>>> return fontDescriptors[0].getNativeName(); >>>>>> }else { >>>>>> fontName ="Arial,ANSI_CHARSET"; >>>>>> } >>>>>> } >>> >>> The direct cause of the crash which I saw is >>> WComponentPeer::defaultFont was null. >>> So I think we need to assertion to check WComponentPeer::defaultFont >>> is not null as a safeguard. >>> >>> How about this change? >>> >>> ``` >>> diff -r 1a722ad6e23d >>> src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>> --- >>> a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>> Tue Jul 28 09:05:36 2020 +0200 >>> +++ >>> b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>> Wed Jul 29 09:32:00 2020 +0900 >>> @@ -56,6 +56,7 @@ >>> import java.awt.image.VolatileImage; >>> import java.awt.peer.ComponentPeer; >>> import java.awt.peer.ContainerPeer; >>> +import java.util.Objects; >>> >>> import sun.awt.AWTAccessor; >>> import sun.awt.PaintEventDispatcher; >>> @@ -579,7 +580,12 @@ >>> } >>> >>> // fallback default font object >>> - static final Font defaultFont = new Font(Font.DIALOG, >>> Font.PLAIN, 12); >>> + static final Font defaultFont; >>> + >>> + static { >>> + defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>> + Objects.requireNonNull(defaultFont, "default font must not >>> be null"); >>> + } >>> >>> @Override >>> public Graphics getGraphics() { >>> diff -r 1a722ad6e23d >>> src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>> >>> --- >>> a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>> Tue Jul 28 09:05:36 2020 +0200 >>> +++ >>> b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>> Wed Jul 29 09:32:00 2020 +0900 >>> @@ -157,9 +157,12 @@ >>> public String getTextComponentFontName(String familyName, int >>> style) { >>> FontDescriptor[] fontDescriptors = >>> getFontDescriptors(familyName, style); >>> String fontName = findFontWithCharset(fontDescriptors, >>> textInputCharset); >>> - if (fontName == null) { >>> + if ((fontName == null) && >>> !textInputCharset.equals("DEFAULT_CHARSET")) { >>> fontName = findFontWithCharset(fontDescriptors, >>> "DEFAULT_CHARSET"); >>> } >>> + if ((fontName == null) && (fontDescriptors.length > 0)) { >>> + fontName = fontDescriptors[0].getNativeName(); >>> + } >>> return fontName; >>> } >>> >>> ``` >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>> On 2020/07/28 23:43, Philip Race wrote: >>>> 1) You assume there is a font with ANSI_CHARSET in the list. >>>> I thought I already tried to point out that if the entry looked >>>> like this >>>> >>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>> instead of the current >>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>> >>>> then I am not sure your fix in-line below will find anything and >>>> we'll still crash. >>>> >>>> 2) changing findFontWithCharset is still the wrong/more dangerous >>>> place to change this. >>>> You may be uninintentionally changing behaviour. >>>> >>>> My proposal won't break anything. It just finds a fall back when >>>> otherwise we'd crash. >>>> >>>> I am not sure any of the CHARSET selections matter any more when >>>> using a unicode locale. >>>> It is mainly about selecting the most appropriate font. >>>> >>>> And that isn't going to work with out more changes. >>>> >>>> At the very least we have to augment these >>>> subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >>>> subsetEncodingMap.put("japanese", "windows-31j"); >>>> >>>> with *something like* >>>> >>>> subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >>>> subsetEncodingMap.put("japanese-utf8", "utf-8"); >>>> >>>> and also update the fontconfig file to have >>>> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >>>> >>>> and lots of fontconfig change like adding >>>> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >>>> >>>> I haven't thought that through to see if this is exactly right but >>>> it is what is really missing IMO. >>>> >>>> However having done all of that it still doesn't change that >>>> 1) There is the possibility of a crash if not done right >>>> 2) It isn't clear that it *really matters*. >>>> >>>> And a rearchitecture of this file and the supporting code is beyond >>>> the scope of what we want to do today ... >>>> >>>> -phil >>>> >>>> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>>>> Hi Phil >>>>> >>>>> Thank you so much for further investigation! >>>>> Your change works fine on my Windows which is set to Japanese locale. >>>>> >>>>> However I wonder the meanings of "DEFAULT_CHARSET". It does not >>>>> appear to be working, right? >>>>> >>>>> To my understand, alphabetic font should be used if >>>>> "DEFAULT_CHARSET" is chosen. >>>>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>>>> >>>>> Thus I think we can fix as below: >>>>> >>>>> ``` >>>>> diff -r 1a722ad6e23d >>>>> src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>> >>>>> --- >>>>> a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>> Tue Jul 28 09:05:36 2020 +0200 >>>>> +++ >>>>> b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>> Tue Jul 28 18:08:06 2020 +0900 >>>>> @@ -165,6 +165,9 @@ >>>>> >>>>> private String findFontWithCharset(FontDescriptor[] >>>>> fontDescriptors, String charset) { >>>>> String fontName = null; >>>>> + if (charset.equals("DEFAULT_CHARSET")) { >>>>> + charset = "ANSI_CHARSET"; >>>>> + } >>>>> for (int i = 0; i < fontDescriptors.length; i++) { >>>>> String componentFontName = >>>>> fontDescriptors[i].getNativeName(); >>>>> if (componentFontName.endsWith(charset)) { >>>>> ``` >>>>> >>>>> The following code is pointless as you said, so I agree with you >>>>> to remove it. >>>>> >>>>>>> if (fontName ==null) { >>>>>>> fontName = >>>>>>> findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>> } >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> On 2020/07/28 15:15, Philip Race wrote: >>>>>> I do see some case when default is being returned. >>>>>> >>>>>> subsetEncodingMap.put("alphabetic", "default"); >>>>>> >>>>>> which then needs an alphabetic font as part of the core script >>>>>> sequence. >>>>>> Now looking at desc.isDefaultFont() && >>>>>> charset.equals("DEFAULT_CHARSET") Perhaps that could change the >>>>>> answer in some cases you don't intend. For these UTF 8 locales >>>>>> there is nothing in the fontconfig that identifies the right >>>>>> font. The "ja" in UTF-8.ja is not connected to "japanese" in the >>>>>> fontconfig file. Something like that may be the right fix but it >>>>>> would be a bigger change. I am not sure how much it matters >>>>>> either. There just needs to be a font. In the win9x days and when >>>>>> AWT was an "A" lib not using unicode maybe. Or maybe there's >>>>>> still some benefit to the right font for the language still being >>>>>> set as the text component font but it is not happening anyway in >>>>>> this case and your fix won't solve that. All roads lead to the >>>>>> latin/alphabetic font here. My thinking right now is to just make >>>>>> changes in getTextComponentFontNameso it always returns something >>>>>> but only after the current code fails. >>>>>> So instead of your fix, just add this there : >>>>>> >>>>>> if (fontName ==null) { >>>>>> if (fontDescriptors.length >0) { >>>>>> return fontDescriptors[0].getNativeName(); >>>>>> }else { >>>>>> fontName ="Arial,ANSI_CHARSET"; >>>>>> } >>>>>> } >>>>>> >>>>>> Not very satisfactory but then we can remove the comment about >>>>>> maybe returning NULL. -phil. >>>>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>>>> This did start when we updated the fontconfiguration file but I >>>>>>> think there was nothing wrong with the update >>>>>>> and I found it could happen with the previous version if we >>>>>>> just remove "devanagari" from this line in the OLD version. >>>>>>> >>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>>>> >>>>>>> >>>>>>> Removing that mimics what happened in the new version and is the >>>>>>> first piece of the puzzle. >>>>>>> >>>>>>> I don't know why devanagari is even there. Possibly it is >>>>>>> because that line was derived from this one :- >>>>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>>>> >>>>>>> since hindi was the first UTF-8 locale that was supported and >>>>>>> someone just edited it to create the JA entry. >>>>>>> >>>>>>> But it indicates to me that this is quite fragile and could >>>>>>> easily have crashed a long time ago if Devanagari were >>>>>>> not there as one of the "core fonts" for UTF-8.ja >>>>>>> >>>>>>> Then in WFontConfiguration.initTables() a few things happen >>>>>>> >>>>>>> first this >>>>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>>>> >>>>>>> [for devanagari JDK specifies the Mangal font.] >>>>>>> >>>>>>> the subsetEncodinging map has this for Japanese >>>>>>> subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>> >>>>>>> then this for UTF-8 for textInputCharset >>>>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>>>> textInputCharset ="DEFAULT_CHARSET"; >>>>>>> >>>>>>> whereas for the old ms932/windows-31j code page we would have >>>>>>> had this >>>>>>> >>>>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>>>> textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>> >>>>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>>>> which looks like this : >>>>>>> >>>>>>> WFontConfiguration.makeAWTFontName(String platformFontName, >>>>>>> String characterSubsetName) { >>>>>>> String windowsCharset = >>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>> if (windowsCharset ==null) { >>>>>>> windowsCharset ="DEFAULT_CHARSET"; >>>>>>> } >>>>>>> return platformFontName +"," + windowsCharset; >>>>>>> } >>>>>>> >>>>>>> For "japanese", the result of >>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>> >>>>>>> will always be"SHIFTJIS_CHARSET" >>>>>>> >>>>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>>>> and this will get stored in the FontDescriptor >>>>>>> >>>>>>> The other core entries for Japanese map to ANSI_CHARSET and >>>>>>> SYMBOL_CHARSET. >>>>>>> >>>>>>> When in the old fontconfig file is called for "devanagari", it >>>>>>> will return "Mangal,DEFAULT_CHARSET". >>>>>>> >>>>>>> Without that, there is no DEFAULT_CHARSET mapped for any font in >>>>>>> the core Japanese fonts. >>>>>>> >>>>>>> This all becomes important when >>>>>>> WFontConfiguration.getTextComponentFontName() is called from >>>>>>> native code. >>>>>>> >>>>>>> It has this line >>>>>>> String fontName = findFontWithCharset(fontDescriptors, >>>>>>> textInputCharset); >>>>>>> >>>>>>> from above we know that for UTF-8 : >>>>>>> textInputCharset ="DEFAULT_CHARSET"; >>>>>>> >>>>>>> but as just noted above there are NO fonts tagged with that >>>>>>> >>>>>>> So the look up fails. The code retries : - >>>>>>> if (fontName ==null) { >>>>>>> fontName = >>>>>>> findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>> } >>>>>>> but that was pointless since DEFAULT_CHARSET is what was >>>>>>> already tried. >>>>>>> >>>>>>> Now back to the windows-31j locale, there we had >>>>>>> >>>>>>> textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>> >>>>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>>>> >>>>>>> getTextComponentFontName() has the comment "May return null." >>>>>>> which is true, but not very helpful to the native caller, which >>>>>>> bails out, leaving the >>>>>>> native font structs uninitialised and ready to cause a crash. >>>>>>> >>>>>>> That's the kind of analysis I was hoping for ! >>>>>>> >>>>>>> Now, the question is, is what you propose the right fix for this ? >>>>>>> But I am not sure it can even work. >>>>>>> >>>>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, >>>>>>> exclusionRanges, encoding.equals("default")); seems like it will >>>>>>> never pass true in my testing. Then the whole fix falls apart. >>>>>>> Can you show some evidence ? -phil >>>>>>> >>>>>>> >>>>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>>>> Hi Phil, >>>>>>>> >>>>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find >>>>>>>> if -Dfile.encoding=UTF-8 is passed. >>>>>>>> I guess one of the cause is the definitions in >>>>>>>> make/data/fontconfig/windows.fontconfig.properties, but also >>>>>>>> DEFAULT_CHARSET does not work at this point. >>>>>>>> >>>>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in >>>>>>>> WFontConfiguration::findFontWithCharset is set to "windows-31j" >>>>>>>> and it can find out valid font when Windows is set to Japanese >>>>>>>> locale. >>>>>>>> >>>>>>>> I can share minidump for further investigation. What should I >>>>>>>> do / share? >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> You're avoiding a crash but I don't yet know what *exactly* >>>>>>>>> caused the crash. >>>>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not >>>>>>>>> the exact cause. >>>>>>>>> This just starts it and something bad presumably happens later >>>>>>>>> in native code. >>>>>>>>> >>>>>>>>> And I don't yet understand why (we think) this started >>>>>>>>> happening when some >>>>>>>>> additional fonts were added to the file. >>>>>>>>> >>>>>>>>> Knowing exactly what is wrong will help decide if this is the >>>>>>>>> right fix. >>>>>>>>> >>>>>>>>> -phil >>>>>>>>> >>>>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>>>> Hi Jay, >>>>>>>>>> >>>>>>>>>> I share you hs_err log of this issue. >>>>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>>>>> >>>>>>>>>> I can share you if you want to know. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>> >>>>>>>>>>> I tried after changing the locale to Japanese but I don?t >>>>>>>>>>> see the issue. >>>>>>>>>>> >>>>>>>>>>> Also tried to reproduce the issue by enabling/disabling >>>>>>>>>>> setting "Beta:Use Unicode UTF-8 for worldwide language >>>>>>>>>>> support" in my locale setting. >>>>>>>>>>> >>>>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Jay >>>>>>>>>>> >>>>>>>>>>> -----Original Message----- >>>>>>>>>>> From: Yasumasa Suenaga >>>>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>>>> To: Jayathirth D v >>>>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: >>>>>>>>>>> JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>>>> >>>>>>>>>>> Hi Jay, >>>>>>>>>>> >>>>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> I tried reproducing the issue in my Windows 10 machine with >>>>>>>>>>>> UTF-8 encoding and test file mentioned in the bug, I don?t >>>>>>>>>>>> see any crash. >>>>>>>>>>>> Am I missing something? >>>>>>>>>>> >>>>>>>>>>> OS locale may be affecting. >>>>>>>>>>> >>>>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so >>>>>>>>>>> WFontConfiguration attempt to find Japanese font by default. >>>>>>>>>>> However WFontConfiguration cannot find out the font of >>>>>>>>>>> "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> >>>>>>>>>>> Yasumasa >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> Also I think this should be in awt-dev so adding the >>>>>>>>>>>> mailing list. >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Jay >>>>>>>>>>>> >>>>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> PING: could you review it? >>>>>>>>>>>>> >>>>>>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>> webrev: >>>>>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>> >>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>> Please review this change: >>>>>>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>> webrev: >>>>>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with >>>>>>>>>>>>>> -Dfile.encoding=UTF-8, but JVM crashed due to internal >>>>>>>>>>>>>> error on fastdebug VM. I saw same call stack with >>>>>>>>>>>>>> JDK-8236161 in hs_err log. >>>>>>>>>>>>>> I investigated it, then I found out current >>>>>>>>>>>>>> implementation cannot handle default charset. >>>>>>>>>>>>>> If charset is set to UTF-8, it would be handled as >>>>>>>>>>>>>> "DEFAULT_CHARSET" in WFontConfiguration::initTables. >>>>>>>>>>>>>> However it does not affect native font name, so we cannot >>>>>>>>>>>>>> find valid font. >>>>>>>>>>>>>> This change has passed all tests on submit repo >>>>>>>>>>>>>> (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>> >>>>>>> >>>>>> From Sergey.Bylokhov at oracle.com Wed Jul 29 01:20:43 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Tue, 28 Jul 2020 18:20:43 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <98367096-a1d4-9a35-5e35-3ce27b96bc5c@oss.nttdata.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> <5F2039A4.6040807@oracle.com> <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> <5F20C7A4.2010002@oracle.com> <98367096-a1d4-9a35-5e35-3ce27b96bc5c@oss.nttdata.com> Message-ID: <49a16212-19e6-2a8e-bc64-08ab37a787f8@oracle.com> On 28.07.2020 18:10, Yasumasa Suenaga wrote: >> Nope, because the problem is that we may to return anything from this method (ie >> return null instead). This is obviously not null so is fine. > > Ok, so how about this change? > > ? http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.01/ Probably I missed something, but how defaultFont could be null, and how requireNonNull will help? If the "new Font(...)" will fail because of exception then requireNonNull will never be executed. And if "new Font(...)" succeed then defaultFont will not be null. > > > Yasumasa > > >> -phil. >> >> >>> >>>>>> if (fontName ==null) { >>>>>> ???? if (fontDescriptors.length >0) { >>>>>> ?????? return fontDescriptors[0].getNativeName(); >>>>>> ???? }else { >>>>>> ???????? fontName ="Arial,ANSI_CHARSET"; >>>>>> ??? } >>>>>> } >>> >>> The direct cause of the crash which I saw is WComponentPeer::defaultFont was null. >>> So I think we need to assertion to check WComponentPeer::defaultFont is not null as a safeguard. >>> >>> How about this change? >>> >>> ``` >>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Tue Jul 28 09:05:36 2020 +0200 >>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Wed Jul 29 09:32:00 2020 +0900 >>> @@ -56,6 +56,7 @@ >>> ?import java.awt.image.VolatileImage; >>> ?import java.awt.peer.ComponentPeer; >>> ?import java.awt.peer.ContainerPeer; >>> +import java.util.Objects; >>> >>> ?import sun.awt.AWTAccessor; >>> ?import sun.awt.PaintEventDispatcher; >>> @@ -579,7 +580,12 @@ >>> ???? } >>> >>> ???? // fallback default font object >>> -??? static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>> +??? static final Font defaultFont; >>> + >>> +??? static { >>> +??????? defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>> +??????? Objects.requireNonNull(defaultFont, "default font must not be null"); >>> +??? } >>> >>> ???? @Override >>> ???? public Graphics getGraphics() { >>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Wed Jul 29 09:32:00 2020 +0900 >>> @@ -157,9 +157,12 @@ >>> ???? public String getTextComponentFontName(String familyName, int style) { >>> ???????? FontDescriptor[] fontDescriptors = getFontDescriptors(familyName, style); >>> ???????? String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>> -??????? if (fontName == null) { >>> +??????? if ((fontName == null) && !textInputCharset.equals("DEFAULT_CHARSET")) { >>> ???????????? fontName = findFontWithCharset(fontDescriptors, "DEFAULT_CHARSET"); >>> ???????? } >>> +??????? if ((fontName == null) && (fontDescriptors.length > 0)) { >>> +??????????? fontName = fontDescriptors[0].getNativeName(); >>> +??????? } >>> ???????? return fontName; >>> ???? } >>> >>> ``` >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>> On 2020/07/28 23:43, Philip Race wrote: >>>> 1) You assume there is a font with ANSI_CHARSET in the list. >>>> I thought I already tried to point out that if the entry looked like this >>>> >>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>> instead of the current >>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>> >>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>> >>>> 2) changing findFontWithCharset is still the wrong/more dangerous place to change this. >>>> You may be uninintentionally changing behaviour. >>>> >>>> My proposal won't break anything. It just finds a fall back when otherwise we'd crash. >>>> >>>> I am not sure any of the CHARSET selections matter any more when using a unicode locale. >>>> It is mainly about selecting the most appropriate font. >>>> >>>> And that isn't going to work with out more changes. >>>> >>>> At the very least we have to augment these >>>> ???????? subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >>>> ???????? subsetEncodingMap.put("japanese", "windows-31j"); >>>> >>>> with *something like* >>>> >>>> ???????? subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >>>> ???????? subsetEncodingMap.put("japanese-utf8", "utf-8"); >>>> >>>> and also update the fontconfig file to have >>>> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >>>> >>>> and lots of fontconfig change like adding >>>> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >>>> >>>> I haven't thought that through to see if this is exactly right but it is what is really missing IMO. >>>> >>>> However having done all of that it still doesn't change that >>>> 1) There is the possibility of? a crash if not done right >>>> 2) It isn't clear that it *really matters*. >>>> >>>> And a rearchitecture of this file and the supporting code is beyond the scope of what we want to do today ... >>>> >>>> -phil >>>> >>>> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>>>> Hi Phil >>>>> >>>>> Thank you so much for further investigation! >>>>> Your change works fine on my Windows which is set to Japanese locale. >>>>> >>>>> However I wonder the meanings of "DEFAULT_CHARSET". It does not appear to be working, right? >>>>> >>>>> To my understand, alphabetic font should be used if "DEFAULT_CHARSET" is chosen. >>>>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>>>> >>>>> Thus I think we can fix as below: >>>>> >>>>> ``` >>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 18:08:06 2020 +0900 >>>>> @@ -165,6 +165,9 @@ >>>>> >>>>> ???? private String findFontWithCharset(FontDescriptor[] fontDescriptors, String charset) { >>>>> ???????? String fontName = null; >>>>> +??????? if (charset.equals("DEFAULT_CHARSET")) { >>>>> +??????????? charset = "ANSI_CHARSET"; >>>>> +??????? } >>>>> ???????? for (int i = 0; i < fontDescriptors.length; i++) { >>>>> ???????????? String componentFontName = fontDescriptors[i].getNativeName(); >>>>> ???????????? if (componentFontName.endsWith(charset)) { >>>>> ``` >>>>> >>>>> The following code is pointless as you said, so I agree with you to remove it. >>>>> >>>>>>> if (fontName ==null) { >>>>>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>> } >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> On 2020/07/28 15:15, Philip Race wrote: >>>>>> I do see some case when default is being returned. >>>>>> >>>>>> subsetEncodingMap.put("alphabetic", "default"); >>>>>> >>>>>> which then needs an alphabetic font as part of the core script sequence. >>>>>> Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. >>>>>> So instead of your fix, just add this there : >>>>>> >>>>>> if (fontName ==null) { >>>>>> ???? if (fontDescriptors.length >0) { >>>>>> ?????? return fontDescriptors[0].getNativeName(); >>>>>> ???? }else { >>>>>> ???????? fontName ="Arial,ANSI_CHARSET"; >>>>>> ??? } >>>>>> } >>>>>> >>>>>> Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. >>>>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>>>> This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update >>>>>>> and I found it could happen with the previous? version if we just remove "devanagari" from this line in the OLD version. >>>>>>> >>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>>>> >>>>>>> Removing that mimics what happened in the new version and is the first piece of the puzzle. >>>>>>> >>>>>>> I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- >>>>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>>>> since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. >>>>>>> >>>>>>> But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were >>>>>>> not there as one of the "core fonts" for UTF-8.ja >>>>>>> >>>>>>> Then in WFontConfiguration.initTables() a few things happen >>>>>>> >>>>>>> first this >>>>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>>>> >>>>>>> [for devanagari JDK specifies the Mangal font.] >>>>>>> >>>>>>> the subsetEncodinging map has this for Japanese >>>>>>> ? subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>> >>>>>>> then this for UTF-8 for textInputCharset >>>>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>>>>> >>>>>>> whereas for the old ms932/windows-31j code page we would have had this >>>>>>> >>>>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>> >>>>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>>>> which looks like this : >>>>>>> >>>>>>> WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { >>>>>>> ???? String windowsCharset = subsetCharsetMap.get(characterSubsetName); >>>>>>> ???? if (windowsCharset ==null) { >>>>>>> ???????? windowsCharset ="DEFAULT_CHARSET"; >>>>>>> ???? } >>>>>>> ???? return platformFontName +"," + windowsCharset; >>>>>>> } >>>>>>> >>>>>>> For "japanese", the result of >>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>> >>>>>>> will always be"SHIFTJIS_CHARSET" >>>>>>> >>>>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>>>> and this will get stored in the FontDescriptor >>>>>>> >>>>>>> The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. >>>>>>> >>>>>>> When in the old fontconfig file? is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". >>>>>>> >>>>>>> Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. >>>>>>> >>>>>>> This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. >>>>>>> >>>>>>> It has this line >>>>>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>>> >>>>>>> from above we know that for UTF-8 : >>>>>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>>>>> >>>>>>> but as just noted above there are NO fonts tagged with that >>>>>>> >>>>>>> So the look up fails. The code retries : - >>>>>>> if (fontName ==null) { >>>>>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>> } >>>>>>> ? but that was pointless since DEFAULT_CHARSET is what was already tried. >>>>>>> >>>>>>> Now back to the windows-31j locale, there we had >>>>>>> >>>>>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>> >>>>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>>>> >>>>>>> ? getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the >>>>>>> native font structs uninitialised and ready to cause a crash. >>>>>>> >>>>>>> That's the kind of analysis I was hoping for ! >>>>>>> >>>>>>> Now, the question is, is what you propose the right fix for this ? >>>>>>> But I am not sure it can even work. >>>>>>> >>>>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil >>>>>>> >>>>>>> >>>>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>>>> Hi Phil, >>>>>>>> >>>>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. >>>>>>>> I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. >>>>>>>> >>>>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. >>>>>>>> >>>>>>>> I can share minidump for further investigation. What should I do / share? >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> You're avoiding a crash but I don't yet know what *exactly* caused the crash. >>>>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. >>>>>>>>> This just starts it and something bad presumably happens later in native code. >>>>>>>>> >>>>>>>>> And I don't yet understand why (we think) this started happening when some >>>>>>>>> additional fonts were added to the file. >>>>>>>>> >>>>>>>>> Knowing exactly what is wrong will help decide if this is the right fix. >>>>>>>>> >>>>>>>>> -phil >>>>>>>>> >>>>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>>>> Hi Jay, >>>>>>>>>> >>>>>>>>>> I share you hs_err log of this issue. >>>>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>>>>> >>>>>>>>>> I can share you if you want to know. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>> >>>>>>>>>>> I tried after changing the locale to Japanese but I don?t see the issue. >>>>>>>>>>> >>>>>>>>>>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>>>>>>>>>> >>>>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Jay >>>>>>>>>>> >>>>>>>>>>> -----Original Message----- >>>>>>>>>>> From: Yasumasa Suenaga >>>>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>>>> To: Jayathirth D v >>>>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>>>> >>>>>>>>>>> Hi Jay, >>>>>>>>>>> >>>>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>>>>>>>>>> Am I missing something? >>>>>>>>>>> >>>>>>>>>>> OS locale may be affecting. >>>>>>>>>>> >>>>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>>>>>>>>>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> >>>>>>>>>>> Yasumasa >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Jay >>>>>>>>>>>> >>>>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> PING: could you review it? >>>>>>>>>>>>> >>>>>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>> >>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>> Please review this change: >>>>>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>>>>>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>>>>>>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>>>>>>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>> >>>>>>> >>>>>> -- Best regards, Sergey. From suenaga at oss.nttdata.com Wed Jul 29 01:52:30 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Wed, 29 Jul 2020 10:52:30 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <5F20CEFE.80806@oracle.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> <5F2039A4.6040807@oracle.com> <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> <5F20C7A4.2010002@oracle.com> <98367096-a1d4-9a35-5e35-3ce27b96bc5c@oss.nttdata.com> <5F20CEFE.80806@oracle.com> Message-ID: Hi Phil, Sergey, Sorry, I missed. null is WComponentPeer::pData, not defaultFont. I removed the change for WFontPeer from new webrev. http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.02/ If you are ok this, I will push it to jdk/client. Thanks, Yasumasa On 2020/07/29 10:21, Philip Race wrote: > The change in WFontConfiguration looks good but I have no idea > what the change in WComponentPeer is supposed to achieve. > "new Font()" won't fail. And the constructor is VERY lazy. > It sets fields and returns. That's all. > > -phil. > > On 7/28/20, 6:10 PM, Yasumasa Suenaga wrote: >> On 2020/07/29 9:49, Philip Race wrote: >>> >>> >>> On 7/28/20, 5:35 PM, Yasumasa Suenaga wrote: >>>> Hi Phil, >>>> >>>> Thanks for explanation. >>>> >>>> findFontWithCharset() does not have comments, so I cannot evaluate my proposal whether it breaks important behavior, but I almost agree with your change. >>>> >>>> However... >>>> >>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>> instead of the current >>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>> >>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>> >>>> then isn't it dangerous "Arial,ANSI_CHARSET" is set to fontName forced? >>> >>> Nope, because the problem is that we may to return anything from this method (ie >>> return null instead). This is obviously not null so is fine. >> >> Ok, so how about this change? >> >> ? http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.01/ >> >> >> Yasumasa >> >> >>> -phil. >>> >>> >>>> >>>>>>> if (fontName ==null) { >>>>>>> ???? if (fontDescriptors.length >0) { >>>>>>> ?????? return fontDescriptors[0].getNativeName(); >>>>>>> ???? }else { >>>>>>> ???????? fontName ="Arial,ANSI_CHARSET"; >>>>>>> ??? } >>>>>>> } >>>> >>>> The direct cause of the crash which I saw is WComponentPeer::defaultFont was null. >>>> So I think we need to assertion to check WComponentPeer::defaultFont is not null as a safeguard. >>>> >>>> How about this change? >>>> >>>> ``` >>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Tue Jul 28 09:05:36 2020 +0200 >>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Wed Jul 29 09:32:00 2020 +0900 >>>> @@ -56,6 +56,7 @@ >>>> ?import java.awt.image.VolatileImage; >>>> ?import java.awt.peer.ComponentPeer; >>>> ?import java.awt.peer.ContainerPeer; >>>> +import java.util.Objects; >>>> >>>> ?import sun.awt.AWTAccessor; >>>> ?import sun.awt.PaintEventDispatcher; >>>> @@ -579,7 +580,12 @@ >>>> ???? } >>>> >>>> ???? // fallback default font object >>>> -??? static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>> +??? static final Font defaultFont; >>>> + >>>> +??? static { >>>> +??????? defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>> +??????? Objects.requireNonNull(defaultFont, "default font must not be null"); >>>> +??? } >>>> >>>> ???? @Override >>>> ???? public Graphics getGraphics() { >>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Wed Jul 29 09:32:00 2020 +0900 >>>> @@ -157,9 +157,12 @@ >>>> ???? public String getTextComponentFontName(String familyName, int style) { >>>> ???????? FontDescriptor[] fontDescriptors = getFontDescriptors(familyName, style); >>>> ???????? String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>> -??????? if (fontName == null) { >>>> +??????? if ((fontName == null) && !textInputCharset.equals("DEFAULT_CHARSET")) { >>>> ???????????? fontName = findFontWithCharset(fontDescriptors, "DEFAULT_CHARSET"); >>>> ???????? } >>>> +??????? if ((fontName == null) && (fontDescriptors.length > 0)) { >>>> +??????????? fontName = fontDescriptors[0].getNativeName(); >>>> +??????? } >>>> ???????? return fontName; >>>> ???? } >>>> >>>> ``` >>>> >>>> >>>> Thanks, >>>> >>>> Yasumasa >>>> >>>> >>>> On 2020/07/28 23:43, Philip Race wrote: >>>>> 1) You assume there is a font with ANSI_CHARSET in the list. >>>>> I thought I already tried to point out that if the entry looked like this >>>>> >>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>> instead of the current >>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>> >>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>> >>>>> 2) changing findFontWithCharset is still the wrong/more dangerous place to change this. >>>>> You may be uninintentionally changing behaviour. >>>>> >>>>> My proposal won't break anything. It just finds a fall back when otherwise we'd crash. >>>>> >>>>> I am not sure any of the CHARSET selections matter any more when using a unicode locale. >>>>> It is mainly about selecting the most appropriate font. >>>>> >>>>> And that isn't going to work with out more changes. >>>>> >>>>> At the very least we have to augment these >>>>> ???????? subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >>>>> ???????? subsetEncodingMap.put("japanese", "windows-31j"); >>>>> >>>>> with *something like* >>>>> >>>>> ???????? subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >>>>> ???????? subsetEncodingMap.put("japanese-utf8", "utf-8"); >>>>> >>>>> and also update the fontconfig file to have >>>>> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >>>>> >>>>> and lots of fontconfig change like adding >>>>> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >>>>> >>>>> I haven't thought that through to see if this is exactly right but it is what is really missing IMO. >>>>> >>>>> However having done all of that it still doesn't change that >>>>> 1) There is the possibility of? a crash if not done right >>>>> 2) It isn't clear that it *really matters*. >>>>> >>>>> And a rearchitecture of this file and the supporting code is beyond the scope of what we want to do today ... >>>>> >>>>> -phil >>>>> >>>>> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>>>>> Hi Phil >>>>>> >>>>>> Thank you so much for further investigation! >>>>>> Your change works fine on my Windows which is set to Japanese locale. >>>>>> >>>>>> However I wonder the meanings of "DEFAULT_CHARSET". It does not appear to be working, right? >>>>>> >>>>>> To my understand, alphabetic font should be used if "DEFAULT_CHARSET" is chosen. >>>>>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>>>>> >>>>>> Thus I think we can fix as below: >>>>>> >>>>>> ``` >>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 18:08:06 2020 +0900 >>>>>> @@ -165,6 +165,9 @@ >>>>>> >>>>>> ???? private String findFontWithCharset(FontDescriptor[] fontDescriptors, String charset) { >>>>>> ???????? String fontName = null; >>>>>> +??????? if (charset.equals("DEFAULT_CHARSET")) { >>>>>> +??????????? charset = "ANSI_CHARSET"; >>>>>> +??????? } >>>>>> ???????? for (int i = 0; i < fontDescriptors.length; i++) { >>>>>> ???????????? String componentFontName = fontDescriptors[i].getNativeName(); >>>>>> ???????????? if (componentFontName.endsWith(charset)) { >>>>>> ``` >>>>>> >>>>>> The following code is pointless as you said, so I agree with you to remove it. >>>>>> >>>>>>>> if (fontName ==null) { >>>>>>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>> } >>>>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> On 2020/07/28 15:15, Philip Race wrote: >>>>>>> I do see some case when default is being returned. >>>>>>> >>>>>>> subsetEncodingMap.put("alphabetic", "default"); >>>>>>> >>>>>>> which then needs an alphabetic font as part of the core script sequence. >>>>>>> Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. >>>>>>> So instead of your fix, just add this there : >>>>>>> >>>>>>> if (fontName ==null) { >>>>>>> ???? if (fontDescriptors.length >0) { >>>>>>> ?????? return fontDescriptors[0].getNativeName(); >>>>>>> ???? }else { >>>>>>> ???????? fontName ="Arial,ANSI_CHARSET"; >>>>>>> ??? } >>>>>>> } >>>>>>> >>>>>>> Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. >>>>>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>>>>> This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update >>>>>>>> and I found it could happen with the previous? version if we just remove "devanagari" from this line in the OLD version. >>>>>>>> >>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>>>>> >>>>>>>> Removing that mimics what happened in the new version and is the first piece of the puzzle. >>>>>>>> >>>>>>>> I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- >>>>>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>>>>> since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. >>>>>>>> >>>>>>>> But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were >>>>>>>> not there as one of the "core fonts" for UTF-8.ja >>>>>>>> >>>>>>>> Then in WFontConfiguration.initTables() a few things happen >>>>>>>> >>>>>>>> first this >>>>>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>>>>> >>>>>>>> [for devanagari JDK specifies the Mangal font.] >>>>>>>> >>>>>>>> the subsetEncodinging map has this for Japanese >>>>>>>> ? subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>>> >>>>>>>> then this for UTF-8 for textInputCharset >>>>>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>>>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>>>>>> >>>>>>>> whereas for the old ms932/windows-31j code page we would have had this >>>>>>>> >>>>>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>>>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>> >>>>>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>>>>> which looks like this : >>>>>>>> >>>>>>>> WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { >>>>>>>> ???? String windowsCharset = subsetCharsetMap.get(characterSubsetName); >>>>>>>> ???? if (windowsCharset ==null) { >>>>>>>> ???????? windowsCharset ="DEFAULT_CHARSET"; >>>>>>>> ???? } >>>>>>>> ???? return platformFontName +"," + windowsCharset; >>>>>>>> } >>>>>>>> >>>>>>>> For "japanese", the result of >>>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>>> >>>>>>>> will always be"SHIFTJIS_CHARSET" >>>>>>>> >>>>>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>>>>> and this will get stored in the FontDescriptor >>>>>>>> >>>>>>>> The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. >>>>>>>> >>>>>>>> When in the old fontconfig file? is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". >>>>>>>> >>>>>>>> Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. >>>>>>>> >>>>>>>> This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. >>>>>>>> >>>>>>>> It has this line >>>>>>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>>>> >>>>>>>> from above we know that for UTF-8 : >>>>>>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>>>>>> >>>>>>>> but as just noted above there are NO fonts tagged with that >>>>>>>> >>>>>>>> So the look up fails. The code retries : - >>>>>>>> if (fontName ==null) { >>>>>>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>> } >>>>>>>> ? but that was pointless since DEFAULT_CHARSET is what was already tried. >>>>>>>> >>>>>>>> Now back to the windows-31j locale, there we had >>>>>>>> >>>>>>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>> >>>>>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>>>>> >>>>>>>> ? getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the >>>>>>>> native font structs uninitialised and ready to cause a crash. >>>>>>>> >>>>>>>> That's the kind of analysis I was hoping for ! >>>>>>>> >>>>>>>> Now, the question is, is what you propose the right fix for this ? >>>>>>>> But I am not sure it can even work. >>>>>>>> >>>>>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil >>>>>>>> >>>>>>>> >>>>>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>>>>> Hi Phil, >>>>>>>>> >>>>>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. >>>>>>>>> I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. >>>>>>>>> >>>>>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. >>>>>>>>> >>>>>>>>> I can share minidump for further investigation. What should I do / share? >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Yasumasa >>>>>>>>> >>>>>>>>> >>>>>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> You're avoiding a crash but I don't yet know what *exactly* caused the crash. >>>>>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. >>>>>>>>>> This just starts it and something bad presumably happens later in native code. >>>>>>>>>> >>>>>>>>>> And I don't yet understand why (we think) this started happening when some >>>>>>>>>> additional fonts were added to the file. >>>>>>>>>> >>>>>>>>>> Knowing exactly what is wrong will help decide if this is the right fix. >>>>>>>>>> >>>>>>>>>> -phil >>>>>>>>>> >>>>>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>>>>> Hi Jay, >>>>>>>>>>> >>>>>>>>>>> I share you hs_err log of this issue. >>>>>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>>>>>> >>>>>>>>>>> I can share you if you want to know. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> >>>>>>>>>>> Yasumasa >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>> >>>>>>>>>>>> I tried after changing the locale to Japanese but I don?t see the issue. >>>>>>>>>>>> >>>>>>>>>>>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>>>>>>>>>>> >>>>>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> Jay >>>>>>>>>>>> >>>>>>>>>>>> -----Original Message----- >>>>>>>>>>>> From: Yasumasa Suenaga >>>>>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>>>>> To: Jayathirth D v >>>>>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>>>>> >>>>>>>>>>>> Hi Jay, >>>>>>>>>>>> >>>>>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> >>>>>>>>>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>>>>>>>>>>> Am I missing something? >>>>>>>>>>>> >>>>>>>>>>>> OS locale may be affecting. >>>>>>>>>>>> >>>>>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>>>>>>>>>>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> >>>>>>>>>>>> Yasumasa >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Jay >>>>>>>>>>>>> >>>>>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> PING: could you review it? >>>>>>>>>>>>>> >>>>>>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>> Please review this change: >>>>>>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>>>>>>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>>>>>>>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>>>>>>>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>>>>> >>>>>>> From philip.race at oracle.com Wed Jul 29 02:27:08 2020 From: philip.race at oracle.com (Phil Race) Date: Tue, 28 Jul 2020 19:27:08 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: References: Message-ID: <08EA7F9E-94BF-421D-B73A-912CE402E8A5@oracle.com> Did you copy/paste my typo ? Looks like a . not a , in the string literal. -Phil. > On Jul 28, 2020, at 6:52 PM, Yasumasa Suenaga wrote: > > ?Hi Phil, Sergey, > > Sorry, I missed. null is WComponentPeer::pData, not defaultFont. > I removed the change for WFontPeer from new webrev. > > http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.02/ > > If you are ok this, I will push it to jdk/client. > > > Thanks, > > Yasumasa > > >> On 2020/07/29 10:21, Philip Race wrote: >> The change in WFontConfiguration looks good but I have no idea >> what the change in WComponentPeer is supposed to achieve. >> "new Font()" won't fail. And the constructor is VERY lazy. >> It sets fields and returns. That's all. >> -phil. >>> On 7/28/20, 6:10 PM, Yasumasa Suenaga wrote: >>> On 2020/07/29 9:49, Philip Race wrote: >>>> >>>> >>>> On 7/28/20, 5:35 PM, Yasumasa Suenaga wrote: >>>>> Hi Phil, >>>>> >>>>> Thanks for explanation. >>>>> >>>>> findFontWithCharset() does not have comments, so I cannot evaluate my proposal whether it breaks important behavior, but I almost agree with your change. >>>>> >>>>> However... >>>>> >>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>> instead of the current >>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>> >>>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>> >>>>> then isn't it dangerous "Arial,ANSI_CHARSET" is set to fontName forced? >>>> >>>> Nope, because the problem is that we may to return anything from this method (ie >>>> return null instead). This is obviously not null so is fine. >>> >>> Ok, so how about this change? >>> >>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.01/ >>> >>> >>> Yasumasa >>> >>> >>>> -phil. >>>> >>>> >>>>> >>>>>>>> if (fontName ==null) { >>>>>>>> if (fontDescriptors.length >0) { >>>>>>>> return fontDescriptors[0].getNativeName(); >>>>>>>> }else { >>>>>>>> fontName ="Arial,ANSI_CHARSET"; >>>>>>>> } >>>>>>>> } >>>>> >>>>> The direct cause of the crash which I saw is WComponentPeer::defaultFont was null. >>>>> So I think we need to assertion to check WComponentPeer::defaultFont is not null as a safeguard. >>>>> >>>>> How about this change? >>>>> >>>>> ``` >>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Tue Jul 28 09:05:36 2020 +0200 >>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Wed Jul 29 09:32:00 2020 +0900 >>>>> @@ -56,6 +56,7 @@ >>>>> import java.awt.image.VolatileImage; >>>>> import java.awt.peer.ComponentPeer; >>>>> import java.awt.peer.ContainerPeer; >>>>> +import java.util.Objects; >>>>> >>>>> import sun.awt.AWTAccessor; >>>>> import sun.awt.PaintEventDispatcher; >>>>> @@ -579,7 +580,12 @@ >>>>> } >>>>> >>>>> // fallback default font object >>>>> - static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>> + static final Font defaultFont; >>>>> + >>>>> + static { >>>>> + defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>> + Objects.requireNonNull(defaultFont, "default font must not be null"); >>>>> + } >>>>> >>>>> @Override >>>>> public Graphics getGraphics() { >>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Wed Jul 29 09:32:00 2020 +0900 >>>>> @@ -157,9 +157,12 @@ >>>>> public String getTextComponentFontName(String familyName, int style) { >>>>> FontDescriptor[] fontDescriptors = getFontDescriptors(familyName, style); >>>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>> - if (fontName == null) { >>>>> + if ((fontName == null) && !textInputCharset.equals("DEFAULT_CHARSET")) { >>>>> fontName = findFontWithCharset(fontDescriptors, "DEFAULT_CHARSET"); >>>>> } >>>>> + if ((fontName == null) && (fontDescriptors.length > 0)) { >>>>> + fontName = fontDescriptors[0].getNativeName(); >>>>> + } >>>>> return fontName; >>>>> } >>>>> >>>>> ``` >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> On 2020/07/28 23:43, Philip Race wrote: >>>>>> 1) You assume there is a font with ANSI_CHARSET in the list. >>>>>> I thought I already tried to point out that if the entry looked like this >>>>>> >>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>> instead of the current >>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>> >>>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>>> >>>>>> 2) changing findFontWithCharset is still the wrong/more dangerous place to change this. >>>>>> You may be uninintentionally changing behaviour. >>>>>> >>>>>> My proposal won't break anything. It just finds a fall back when otherwise we'd crash. >>>>>> >>>>>> I am not sure any of the CHARSET selections matter any more when using a unicode locale. >>>>>> It is mainly about selecting the most appropriate font. >>>>>> >>>>>> And that isn't going to work with out more changes. >>>>>> >>>>>> At the very least we have to augment these >>>>>> subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >>>>>> subsetEncodingMap.put("japanese", "windows-31j"); >>>>>> >>>>>> with *something like* >>>>>> >>>>>> subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >>>>>> subsetEncodingMap.put("japanese-utf8", "utf-8"); >>>>>> >>>>>> and also update the fontconfig file to have >>>>>> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >>>>>> >>>>>> and lots of fontconfig change like adding >>>>>> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >>>>>> >>>>>> I haven't thought that through to see if this is exactly right but it is what is really missing IMO. >>>>>> >>>>>> However having done all of that it still doesn't change that >>>>>> 1) There is the possibility of a crash if not done right >>>>>> 2) It isn't clear that it *really matters*. >>>>>> >>>>>> And a rearchitecture of this file and the supporting code is beyond the scope of what we want to do today ... >>>>>> >>>>>> -phil >>>>>> >>>>>> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>>>>>> Hi Phil >>>>>>> >>>>>>> Thank you so much for further investigation! >>>>>>> Your change works fine on my Windows which is set to Japanese locale. >>>>>>> >>>>>>> However I wonder the meanings of "DEFAULT_CHARSET". It does not appear to be working, right? >>>>>>> >>>>>>> To my understand, alphabetic font should be used if "DEFAULT_CHARSET" is chosen. >>>>>>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>>>>>> >>>>>>> Thus I think we can fix as below: >>>>>>> >>>>>>> ``` >>>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 18:08:06 2020 +0900 >>>>>>> @@ -165,6 +165,9 @@ >>>>>>> >>>>>>> private String findFontWithCharset(FontDescriptor[] fontDescriptors, String charset) { >>>>>>> String fontName = null; >>>>>>> + if (charset.equals("DEFAULT_CHARSET")) { >>>>>>> + charset = "ANSI_CHARSET"; >>>>>>> + } >>>>>>> for (int i = 0; i < fontDescriptors.length; i++) { >>>>>>> String componentFontName = fontDescriptors[i].getNativeName(); >>>>>>> if (componentFontName.endsWith(charset)) { >>>>>>> ``` >>>>>>> >>>>>>> The following code is pointless as you said, so I agree with you to remove it. >>>>>>> >>>>>>>>> if (fontName ==null) { >>>>>>>>> fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>> } >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>> On 2020/07/28 15:15, Philip Race wrote: >>>>>>>> I do see some case when default is being returned. >>>>>>>> >>>>>>>> subsetEncodingMap.put("alphabetic", "default"); >>>>>>>> >>>>>>>> which then needs an alphabetic font as part of the core script sequence. >>>>>>>> Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. >>>>>>>> So instead of your fix, just add this there : >>>>>>>> >>>>>>>> if (fontName ==null) { >>>>>>>> if (fontDescriptors.length >0) { >>>>>>>> return fontDescriptors[0].getNativeName(); >>>>>>>> }else { >>>>>>>> fontName ="Arial,ANSI_CHARSET"; >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. >>>>>>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>>>>>> This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update >>>>>>>>> and I found it could happen with the previous version if we just remove "devanagari" from this line in the OLD version. >>>>>>>>> >>>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>>>>>> >>>>>>>>> Removing that mimics what happened in the new version and is the first piece of the puzzle. >>>>>>>>> >>>>>>>>> I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- >>>>>>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>>>>>> since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. >>>>>>>>> >>>>>>>>> But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were >>>>>>>>> not there as one of the "core fonts" for UTF-8.ja >>>>>>>>> >>>>>>>>> Then in WFontConfiguration.initTables() a few things happen >>>>>>>>> >>>>>>>>> first this >>>>>>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>>>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>>>>>> >>>>>>>>> [for devanagari JDK specifies the Mangal font.] >>>>>>>>> >>>>>>>>> the subsetEncodinging map has this for Japanese >>>>>>>>> subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>>>> >>>>>>>>> then this for UTF-8 for textInputCharset >>>>>>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>>>>>> textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>> >>>>>>>>> whereas for the old ms932/windows-31j code page we would have had this >>>>>>>>> >>>>>>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>>>>>> textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>> >>>>>>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>>>>>> which looks like this : >>>>>>>>> >>>>>>>>> WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { >>>>>>>>> String windowsCharset = subsetCharsetMap.get(characterSubsetName); >>>>>>>>> if (windowsCharset ==null) { >>>>>>>>> windowsCharset ="DEFAULT_CHARSET"; >>>>>>>>> } >>>>>>>>> return platformFontName +"," + windowsCharset; >>>>>>>>> } >>>>>>>>> >>>>>>>>> For "japanese", the result of >>>>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>>>> >>>>>>>>> will always be"SHIFTJIS_CHARSET" >>>>>>>>> >>>>>>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>>>>>> and this will get stored in the FontDescriptor >>>>>>>>> >>>>>>>>> The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. >>>>>>>>> >>>>>>>>> When in the old fontconfig file is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". >>>>>>>>> >>>>>>>>> Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. >>>>>>>>> >>>>>>>>> This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. >>>>>>>>> >>>>>>>>> It has this line >>>>>>>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>>>>> >>>>>>>>> from above we know that for UTF-8 : >>>>>>>>> textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>> >>>>>>>>> but as just noted above there are NO fonts tagged with that >>>>>>>>> >>>>>>>>> So the look up fails. The code retries : - >>>>>>>>> if (fontName ==null) { >>>>>>>>> fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>> } >>>>>>>>> but that was pointless since DEFAULT_CHARSET is what was already tried. >>>>>>>>> >>>>>>>>> Now back to the windows-31j locale, there we had >>>>>>>>> >>>>>>>>> textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>> >>>>>>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>>>>>> >>>>>>>>> getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the >>>>>>>>> native font structs uninitialised and ready to cause a crash. >>>>>>>>> >>>>>>>>> That's the kind of analysis I was hoping for ! >>>>>>>>> >>>>>>>>> Now, the question is, is what you propose the right fix for this ? >>>>>>>>> But I am not sure it can even work. >>>>>>>>> >>>>>>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil >>>>>>>>> >>>>>>>>> >>>>>>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>>>>>> Hi Phil, >>>>>>>>>> >>>>>>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. >>>>>>>>>> I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. >>>>>>>>>> >>>>>>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. >>>>>>>>>> >>>>>>>>>> I can share minidump for further investigation. What should I do / share? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> You're avoiding a crash but I don't yet know what *exactly* caused the crash. >>>>>>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. >>>>>>>>>>> This just starts it and something bad presumably happens later in native code. >>>>>>>>>>> >>>>>>>>>>> And I don't yet understand why (we think) this started happening when some >>>>>>>>>>> additional fonts were added to the file. >>>>>>>>>>> >>>>>>>>>>> Knowing exactly what is wrong will help decide if this is the right fix. >>>>>>>>>>> >>>>>>>>>>> -phil >>>>>>>>>>> >>>>>>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>>>>>> Hi Jay, >>>>>>>>>>>> >>>>>>>>>>>> I share you hs_err log of this issue. >>>>>>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>>>>>>> >>>>>>>>>>>> I can share you if you want to know. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> >>>>>>>>>>>> Yasumasa >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>> >>>>>>>>>>>>> I tried after changing the locale to Japanese but I don?t see the issue. >>>>>>>>>>>>> >>>>>>>>>>>>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>>>>>>>>>>>> >>>>>>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Jay >>>>>>>>>>>>> >>>>>>>>>>>>> -----Original Message----- >>>>>>>>>>>>> From: Yasumasa Suenaga >>>>>>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>>>>>> To: Jayathirth D v >>>>>>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>>>>>> >>>>>>>>>>>>> Hi Jay, >>>>>>>>>>>>> >>>>>>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>>>>>>>>>>>> Am I missing something? >>>>>>>>>>>>> >>>>>>>>>>>>> OS locale may be affecting. >>>>>>>>>>>>> >>>>>>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>>>>>>>>>>>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> >>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Jay >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> PING: could you review it? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>> Please review this change: >>>>>>>>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>>>>>>>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>>>>>>>>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>>>>>>>>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>> >>>>>>>>> >>>>>>>> From suenaga at oss.nttdata.com Wed Jul 29 05:40:57 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Wed, 29 Jul 2020 14:40:57 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <08EA7F9E-94BF-421D-B73A-912CE402E8A5@oracle.com> References: <08EA7F9E-94BF-421D-B73A-912CE402E8A5@oracle.com> Message-ID: <7ed89d94-4c4e-f895-242a-8d266e4513f6@oss.nttdata.com> On 2020/07/29 11:27, Phil Race wrote: > Did you copy/paste my typo ? Looks like a . not a , in the string literal. Fixed: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.03/ Yasumasa > -Phil. > >> On Jul 28, 2020, at 6:52 PM, Yasumasa Suenaga wrote: >> >> ?Hi Phil, Sergey, >> >> Sorry, I missed. null is WComponentPeer::pData, not defaultFont. >> I removed the change for WFontPeer from new webrev. >> >> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.02/ >> >> If you are ok this, I will push it to jdk/client. >> >> >> Thanks, >> >> Yasumasa >> >> >>> On 2020/07/29 10:21, Philip Race wrote: >>> The change in WFontConfiguration looks good but I have no idea >>> what the change in WComponentPeer is supposed to achieve. >>> "new Font()" won't fail. And the constructor is VERY lazy. >>> It sets fields and returns. That's all. >>> -phil. >>>> On 7/28/20, 6:10 PM, Yasumasa Suenaga wrote: >>>> On 2020/07/29 9:49, Philip Race wrote: >>>>> >>>>> >>>>> On 7/28/20, 5:35 PM, Yasumasa Suenaga wrote: >>>>>> Hi Phil, >>>>>> >>>>>> Thanks for explanation. >>>>>> >>>>>> findFontWithCharset() does not have comments, so I cannot evaluate my proposal whether it breaks important behavior, but I almost agree with your change. >>>>>> >>>>>> However... >>>>>> >>>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>>> instead of the current >>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>>> >>>>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>>> >>>>>> then isn't it dangerous "Arial,ANSI_CHARSET" is set to fontName forced? >>>>> >>>>> Nope, because the problem is that we may to return anything from this method (ie >>>>> return null instead). This is obviously not null so is fine. >>>> >>>> Ok, so how about this change? >>>> >>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.01/ >>>> >>>> >>>> Yasumasa >>>> >>>> >>>>> -phil. >>>>> >>>>> >>>>>> >>>>>>>>> if (fontName ==null) { >>>>>>>>> if (fontDescriptors.length >0) { >>>>>>>>> return fontDescriptors[0].getNativeName(); >>>>>>>>> }else { >>>>>>>>> fontName ="Arial,ANSI_CHARSET"; >>>>>>>>> } >>>>>>>>> } >>>>>> >>>>>> The direct cause of the crash which I saw is WComponentPeer::defaultFont was null. >>>>>> So I think we need to assertion to check WComponentPeer::defaultFont is not null as a safeguard. >>>>>> >>>>>> How about this change? >>>>>> >>>>>> ``` >>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Tue Jul 28 09:05:36 2020 +0200 >>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Wed Jul 29 09:32:00 2020 +0900 >>>>>> @@ -56,6 +56,7 @@ >>>>>> import java.awt.image.VolatileImage; >>>>>> import java.awt.peer.ComponentPeer; >>>>>> import java.awt.peer.ContainerPeer; >>>>>> +import java.util.Objects; >>>>>> >>>>>> import sun.awt.AWTAccessor; >>>>>> import sun.awt.PaintEventDispatcher; >>>>>> @@ -579,7 +580,12 @@ >>>>>> } >>>>>> >>>>>> // fallback default font object >>>>>> - static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>>> + static final Font defaultFont; >>>>>> + >>>>>> + static { >>>>>> + defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>>> + Objects.requireNonNull(defaultFont, "default font must not be null"); >>>>>> + } >>>>>> >>>>>> @Override >>>>>> public Graphics getGraphics() { >>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Wed Jul 29 09:32:00 2020 +0900 >>>>>> @@ -157,9 +157,12 @@ >>>>>> public String getTextComponentFontName(String familyName, int style) { >>>>>> FontDescriptor[] fontDescriptors = getFontDescriptors(familyName, style); >>>>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>> - if (fontName == null) { >>>>>> + if ((fontName == null) && !textInputCharset.equals("DEFAULT_CHARSET")) { >>>>>> fontName = findFontWithCharset(fontDescriptors, "DEFAULT_CHARSET"); >>>>>> } >>>>>> + if ((fontName == null) && (fontDescriptors.length > 0)) { >>>>>> + fontName = fontDescriptors[0].getNativeName(); >>>>>> + } >>>>>> return fontName; >>>>>> } >>>>>> >>>>>> ``` >>>>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> On 2020/07/28 23:43, Philip Race wrote: >>>>>>> 1) You assume there is a font with ANSI_CHARSET in the list. >>>>>>> I thought I already tried to point out that if the entry looked like this >>>>>>> >>>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>>> instead of the current >>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>>> >>>>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>>>> >>>>>>> 2) changing findFontWithCharset is still the wrong/more dangerous place to change this. >>>>>>> You may be uninintentionally changing behaviour. >>>>>>> >>>>>>> My proposal won't break anything. It just finds a fall back when otherwise we'd crash. >>>>>>> >>>>>>> I am not sure any of the CHARSET selections matter any more when using a unicode locale. >>>>>>> It is mainly about selecting the most appropriate font. >>>>>>> >>>>>>> And that isn't going to work with out more changes. >>>>>>> >>>>>>> At the very least we have to augment these >>>>>>> subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >>>>>>> subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>> >>>>>>> with *something like* >>>>>>> >>>>>>> subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >>>>>>> subsetEncodingMap.put("japanese-utf8", "utf-8"); >>>>>>> >>>>>>> and also update the fontconfig file to have >>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >>>>>>> >>>>>>> and lots of fontconfig change like adding >>>>>>> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >>>>>>> >>>>>>> I haven't thought that through to see if this is exactly right but it is what is really missing IMO. >>>>>>> >>>>>>> However having done all of that it still doesn't change that >>>>>>> 1) There is the possibility of a crash if not done right >>>>>>> 2) It isn't clear that it *really matters*. >>>>>>> >>>>>>> And a rearchitecture of this file and the supporting code is beyond the scope of what we want to do today ... >>>>>>> >>>>>>> -phil >>>>>>> >>>>>>> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>>>>>>> Hi Phil >>>>>>>> >>>>>>>> Thank you so much for further investigation! >>>>>>>> Your change works fine on my Windows which is set to Japanese locale. >>>>>>>> >>>>>>>> However I wonder the meanings of "DEFAULT_CHARSET". It does not appear to be working, right? >>>>>>>> >>>>>>>> To my understand, alphabetic font should be used if "DEFAULT_CHARSET" is chosen. >>>>>>>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>>>>>>> >>>>>>>> Thus I think we can fix as below: >>>>>>>> >>>>>>>> ``` >>>>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 18:08:06 2020 +0900 >>>>>>>> @@ -165,6 +165,9 @@ >>>>>>>> >>>>>>>> private String findFontWithCharset(FontDescriptor[] fontDescriptors, String charset) { >>>>>>>> String fontName = null; >>>>>>>> + if (charset.equals("DEFAULT_CHARSET")) { >>>>>>>> + charset = "ANSI_CHARSET"; >>>>>>>> + } >>>>>>>> for (int i = 0; i < fontDescriptors.length; i++) { >>>>>>>> String componentFontName = fontDescriptors[i].getNativeName(); >>>>>>>> if (componentFontName.endsWith(charset)) { >>>>>>>> ``` >>>>>>>> >>>>>>>> The following code is pointless as you said, so I agree with you to remove it. >>>>>>>> >>>>>>>>>> if (fontName ==null) { >>>>>>>>>> fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>>> } >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>> On 2020/07/28 15:15, Philip Race wrote: >>>>>>>>> I do see some case when default is being returned. >>>>>>>>> >>>>>>>>> subsetEncodingMap.put("alphabetic", "default"); >>>>>>>>> >>>>>>>>> which then needs an alphabetic font as part of the core script sequence. >>>>>>>>> Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. >>>>>>>>> So instead of your fix, just add this there : >>>>>>>>> >>>>>>>>> if (fontName ==null) { >>>>>>>>> if (fontDescriptors.length >0) { >>>>>>>>> return fontDescriptors[0].getNativeName(); >>>>>>>>> }else { >>>>>>>>> fontName ="Arial,ANSI_CHARSET"; >>>>>>>>> } >>>>>>>>> } >>>>>>>>> >>>>>>>>> Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. >>>>>>>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>>>>>>> This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update >>>>>>>>>> and I found it could happen with the previous version if we just remove "devanagari" from this line in the OLD version. >>>>>>>>>> >>>>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>>>>>>> >>>>>>>>>> Removing that mimics what happened in the new version and is the first piece of the puzzle. >>>>>>>>>> >>>>>>>>>> I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- >>>>>>>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>>>>>>> since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. >>>>>>>>>> >>>>>>>>>> But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were >>>>>>>>>> not there as one of the "core fonts" for UTF-8.ja >>>>>>>>>> >>>>>>>>>> Then in WFontConfiguration.initTables() a few things happen >>>>>>>>>> >>>>>>>>>> first this >>>>>>>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>>>>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>>>>>>> >>>>>>>>>> [for devanagari JDK specifies the Mangal font.] >>>>>>>>>> >>>>>>>>>> the subsetEncodinging map has this for Japanese >>>>>>>>>> subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>>>>> >>>>>>>>>> then this for UTF-8 for textInputCharset >>>>>>>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>>>>>>> textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>>> >>>>>>>>>> whereas for the old ms932/windows-31j code page we would have had this >>>>>>>>>> >>>>>>>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>>>>>>> textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>>> >>>>>>>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>>>>>>> which looks like this : >>>>>>>>>> >>>>>>>>>> WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { >>>>>>>>>> String windowsCharset = subsetCharsetMap.get(characterSubsetName); >>>>>>>>>> if (windowsCharset ==null) { >>>>>>>>>> windowsCharset ="DEFAULT_CHARSET"; >>>>>>>>>> } >>>>>>>>>> return platformFontName +"," + windowsCharset; >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> For "japanese", the result of >>>>>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>>>>> >>>>>>>>>> will always be"SHIFTJIS_CHARSET" >>>>>>>>>> >>>>>>>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>>>>>>> and this will get stored in the FontDescriptor >>>>>>>>>> >>>>>>>>>> The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. >>>>>>>>>> >>>>>>>>>> When in the old fontconfig file is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". >>>>>>>>>> >>>>>>>>>> Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. >>>>>>>>>> >>>>>>>>>> This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. >>>>>>>>>> >>>>>>>>>> It has this line >>>>>>>>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>>>>>> >>>>>>>>>> from above we know that for UTF-8 : >>>>>>>>>> textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>>> >>>>>>>>>> but as just noted above there are NO fonts tagged with that >>>>>>>>>> >>>>>>>>>> So the look up fails. The code retries : - >>>>>>>>>> if (fontName ==null) { >>>>>>>>>> fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>>> } >>>>>>>>>> but that was pointless since DEFAULT_CHARSET is what was already tried. >>>>>>>>>> >>>>>>>>>> Now back to the windows-31j locale, there we had >>>>>>>>>> >>>>>>>>>> textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>>> >>>>>>>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>>>>>>> >>>>>>>>>> getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the >>>>>>>>>> native font structs uninitialised and ready to cause a crash. >>>>>>>>>> >>>>>>>>>> That's the kind of analysis I was hoping for ! >>>>>>>>>> >>>>>>>>>> Now, the question is, is what you propose the right fix for this ? >>>>>>>>>> But I am not sure it can even work. >>>>>>>>>> >>>>>>>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>>>>>>> Hi Phil, >>>>>>>>>>> >>>>>>>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>> I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. >>>>>>>>>>> >>>>>>>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. >>>>>>>>>>> >>>>>>>>>>> I can share minidump for further investigation. What should I do / share? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> >>>>>>>>>>> Yasumasa >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> You're avoiding a crash but I don't yet know what *exactly* caused the crash. >>>>>>>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. >>>>>>>>>>>> This just starts it and something bad presumably happens later in native code. >>>>>>>>>>>> >>>>>>>>>>>> And I don't yet understand why (we think) this started happening when some >>>>>>>>>>>> additional fonts were added to the file. >>>>>>>>>>>> >>>>>>>>>>>> Knowing exactly what is wrong will help decide if this is the right fix. >>>>>>>>>>>> >>>>>>>>>>>> -phil >>>>>>>>>>>> >>>>>>>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>>>>>>> Hi Jay, >>>>>>>>>>>>> >>>>>>>>>>>>> I share you hs_err log of this issue. >>>>>>>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>>>>>>>> >>>>>>>>>>>>> I can share you if you want to know. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> >>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I tried after changing the locale to Japanese but I don?t see the issue. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>>>>>>>>>>>>> >>>>>>>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Jay >>>>>>>>>>>>>> >>>>>>>>>>>>>> -----Original Message----- >>>>>>>>>>>>>> From: Yasumasa Suenaga >>>>>>>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>>>>>>> To: Jayathirth D v >>>>>>>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Jay, >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>>>>>>>>>>>>> Am I missing something? >>>>>>>>>>>>>> >>>>>>>>>>>>>> OS locale may be affecting. >>>>>>>>>>>>>> >>>>>>>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>>>>>>>>>>>>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> Jay >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> PING: could you review it? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>>> Please review this change: >>>>>>>>>>>>>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>>> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>>>>>>>>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>>>>>>>>>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>>>>>>>>>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>> > From Sergey.Bylokhov at oracle.com Wed Jul 29 08:11:38 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Wed, 29 Jul 2020 01:11:38 -0700 Subject: RFR: 8212226 SurfaceManager throws "Invalid Image variant" for MultiResolutionImage (Windows) In-Reply-To: <88a25554-2712-0d1a-f008-f78b63fee67e@oracle.com> References: <6f2a9c6b-5b3a-d83b-f368-ebd4bd9bfeb1@oracle.com> <633b39d0-7198-f0bd-3ff6-59dcdcfcb068@oracle.com> <88a25554-2712-0d1a-f008-f78b63fee67e@oracle.com> Message-ID: <48870a16-57ed-4856-6bcb-83ca61e77fe1@oracle.com> On 27.07.2020 23:43, Alexander Zuev wrote: > ? As for the test i have a manual test that i use to reproduce the situation but i am not sure i can make > the automated test case - the configuration required is quite unique. I tried to play with the setting > that manages the magnification factor but changing it does not trigger the bug. I guess something like this should work: import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BaseMultiResolutionImage; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import java.awt.image.ImageProducer; import static java.awt.image.BufferedImage.TYPE_INT_RGB; public final class SkipRequestedImageVariant { public static void main(String[] args) { var mri = new BaseMultiResolutionImage(1, generateFakeImage(), generateImage(200, Color.GREEN), generateFakeImage()); BufferedImage target = new BufferedImage(500, 500, TYPE_INT_RGB); Graphics2D g2d = target.createGraphics(); g2d.drawImage(mri, 0, 0, 500, 500, null); g2d.dispose(); if (Color.GREEN.getRGB() != target.getRGB(1, 1)) { throw new RuntimeException("Wrong resolution variant was used"); } } private static BufferedImage generateImage(int size, Color c) { BufferedImage img = new BufferedImage(size, size, TYPE_INT_RGB); Graphics g = img.createGraphics(); g.setColor(c); g.fillRect(0, 0, size, size); g.dispose(); return img; } private static Image generateFakeImage() { return new Image(){ @Override public int getWidth(ImageObserver observer) { return -1; } @Override public int getHeight(ImageObserver observer) { return -1; } @Override public ImageProducer getSource() { return null; } @Override public Graphics getGraphics() { return null; } @Override public Object getProperty(String name, ImageObserver observer) { return null; } }; } } From philip.race at oracle.com Wed Jul 29 15:49:33 2020 From: philip.race at oracle.com (Philip Race) Date: Wed, 29 Jul 2020 08:49:33 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <7ed89d94-4c4e-f895-242a-8d266e4513f6@oss.nttdata.com> References: <08EA7F9E-94BF-421D-B73A-912CE402E8A5@oracle.com> <7ed89d94-4c4e-f895-242a-8d266e4513f6@oss.nttdata.com> Message-ID: <5F219A8D.2060809@oracle.com> Ok. Approved. I assume no one found a way to provoke this without changing the Windows system locale so we can't create a test. -phil. On 7/28/20, 10:40 PM, Yasumasa Suenaga wrote: > On 2020/07/29 11:27, Phil Race wrote: >> Did you copy/paste my typo ? Looks like a . not a , in the string >> literal. > > Fixed: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.03/ > > Yasumasa > > >> -Phil. >> >>> On Jul 28, 2020, at 6:52 PM, Yasumasa Suenaga >>> wrote: >>> >>> ?Hi Phil, Sergey, >>> >>> Sorry, I missed. null is WComponentPeer::pData, not defaultFont. >>> I removed the change for WFontPeer from new webrev. >>> >>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.02/ >>> >>> If you are ok this, I will push it to jdk/client. >>> >>> >>> Thanks, >>> >>> Yasumasa >>> >>> >>>> On 2020/07/29 10:21, Philip Race wrote: >>>> The change in WFontConfiguration looks good but I have no idea >>>> what the change in WComponentPeer is supposed to achieve. >>>> "new Font()" won't fail. And the constructor is VERY lazy. >>>> It sets fields and returns. That's all. >>>> -phil. >>>>> On 7/28/20, 6:10 PM, Yasumasa Suenaga wrote: >>>>> On 2020/07/29 9:49, Philip Race wrote: >>>>>> >>>>>> >>>>>> On 7/28/20, 5:35 PM, Yasumasa Suenaga wrote: >>>>>>> Hi Phil, >>>>>>> >>>>>>> Thanks for explanation. >>>>>>> >>>>>>> findFontWithCharset() does not have comments, so I cannot >>>>>>> evaluate my proposal whether it breaks important behavior, but I >>>>>>> almost agree with your change. >>>>>>> >>>>>>> However... >>>>>>> >>>>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>>>> instead of the current >>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>>>> >>>>>>>> then I am not sure your fix in-line below will find anything >>>>>>>> and we'll still crash. >>>>>>> >>>>>>> then isn't it dangerous "Arial,ANSI_CHARSET" is set to fontName >>>>>>> forced? >>>>>> >>>>>> Nope, because the problem is that we may to return anything from >>>>>> this method (ie >>>>>> return null instead). This is obviously not null so is fine. >>>>> >>>>> Ok, so how about this change? >>>>> >>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.01/ >>>>> >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>>> -phil. >>>>>> >>>>>> >>>>>>> >>>>>>>>>> if (fontName ==null) { >>>>>>>>>> if (fontDescriptors.length >0) { >>>>>>>>>> return fontDescriptors[0].getNativeName(); >>>>>>>>>> }else { >>>>>>>>>> fontName ="Arial,ANSI_CHARSET"; >>>>>>>>>> } >>>>>>>>>> } >>>>>>> >>>>>>> The direct cause of the crash which I saw is >>>>>>> WComponentPeer::defaultFont was null. >>>>>>> So I think we need to assertion to check >>>>>>> WComponentPeer::defaultFont is not null as a safeguard. >>>>>>> >>>>>>> How about this change? >>>>>>> >>>>>>> ``` >>>>>>> diff -r 1a722ad6e23d >>>>>>> src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>>>>>> >>>>>>> --- >>>>>>> a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>>>>>> Tue Jul 28 09:05:36 2020 +0200 >>>>>>> +++ >>>>>>> b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>>>>>> Wed Jul 29 09:32:00 2020 +0900 >>>>>>> @@ -56,6 +56,7 @@ >>>>>>> import java.awt.image.VolatileImage; >>>>>>> import java.awt.peer.ComponentPeer; >>>>>>> import java.awt.peer.ContainerPeer; >>>>>>> +import java.util.Objects; >>>>>>> >>>>>>> import sun.awt.AWTAccessor; >>>>>>> import sun.awt.PaintEventDispatcher; >>>>>>> @@ -579,7 +580,12 @@ >>>>>>> } >>>>>>> >>>>>>> // fallback default font object >>>>>>> - static final Font defaultFont = new Font(Font.DIALOG, >>>>>>> Font.PLAIN, 12); >>>>>>> + static final Font defaultFont; >>>>>>> + >>>>>>> + static { >>>>>>> + defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>>>> + Objects.requireNonNull(defaultFont, "default font must >>>>>>> not be null"); >>>>>>> + } >>>>>>> >>>>>>> @Override >>>>>>> public Graphics getGraphics() { >>>>>>> diff -r 1a722ad6e23d >>>>>>> src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>> >>>>>>> --- >>>>>>> a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>> Tue Jul 28 09:05:36 2020 +0200 >>>>>>> +++ >>>>>>> b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>> Wed Jul 29 09:32:00 2020 +0900 >>>>>>> @@ -157,9 +157,12 @@ >>>>>>> public String getTextComponentFontName(String familyName, >>>>>>> int style) { >>>>>>> FontDescriptor[] fontDescriptors = >>>>>>> getFontDescriptors(familyName, style); >>>>>>> String fontName = findFontWithCharset(fontDescriptors, >>>>>>> textInputCharset); >>>>>>> - if (fontName == null) { >>>>>>> + if ((fontName == null) && >>>>>>> !textInputCharset.equals("DEFAULT_CHARSET")) { >>>>>>> fontName = findFontWithCharset(fontDescriptors, >>>>>>> "DEFAULT_CHARSET"); >>>>>>> } >>>>>>> + if ((fontName == null) && (fontDescriptors.length > 0)) { >>>>>>> + fontName = fontDescriptors[0].getNativeName(); >>>>>>> + } >>>>>>> return fontName; >>>>>>> } >>>>>>> >>>>>>> ``` >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>> On 2020/07/28 23:43, Philip Race wrote: >>>>>>>> 1) You assume there is a font with ANSI_CHARSET in the list. >>>>>>>> I thought I already tried to point out that if the entry looked >>>>>>>> like this >>>>>>>> >>>>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>>>> instead of the current >>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>>>> >>>>>>>> then I am not sure your fix in-line below will find anything >>>>>>>> and we'll still crash. >>>>>>>> >>>>>>>> 2) changing findFontWithCharset is still the wrong/more >>>>>>>> dangerous place to change this. >>>>>>>> You may be uninintentionally changing behaviour. >>>>>>>> >>>>>>>> My proposal won't break anything. It just finds a fall back >>>>>>>> when otherwise we'd crash. >>>>>>>> >>>>>>>> I am not sure any of the CHARSET selections matter any more >>>>>>>> when using a unicode locale. >>>>>>>> It is mainly about selecting the most appropriate font. >>>>>>>> >>>>>>>> And that isn't going to work with out more changes. >>>>>>>> >>>>>>>> At the very least we have to augment these >>>>>>>> subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >>>>>>>> subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>>> >>>>>>>> with *something like* >>>>>>>> >>>>>>>> subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >>>>>>>> subsetEncodingMap.put("japanese-utf8", "utf-8"); >>>>>>>> >>>>>>>> and also update the fontconfig file to have >>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >>>>>>>> >>>>>>>> and lots of fontconfig change like adding >>>>>>>> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >>>>>>>> >>>>>>>> I haven't thought that through to see if this is exactly right >>>>>>>> but it is what is really missing IMO. >>>>>>>> >>>>>>>> However having done all of that it still doesn't change that >>>>>>>> 1) There is the possibility of a crash if not done right >>>>>>>> 2) It isn't clear that it *really matters*. >>>>>>>> >>>>>>>> And a rearchitecture of this file and the supporting code is >>>>>>>> beyond the scope of what we want to do today ... >>>>>>>> >>>>>>>> -phil >>>>>>>> >>>>>>>> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>>>>>>>> Hi Phil >>>>>>>>> >>>>>>>>> Thank you so much for further investigation! >>>>>>>>> Your change works fine on my Windows which is set to Japanese >>>>>>>>> locale. >>>>>>>>> >>>>>>>>> However I wonder the meanings of "DEFAULT_CHARSET". It does >>>>>>>>> not appear to be working, right? >>>>>>>>> >>>>>>>>> To my understand, alphabetic font should be used if >>>>>>>>> "DEFAULT_CHARSET" is chosen. >>>>>>>>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>>>>>>>> >>>>>>>>> Thus I think we can fix as below: >>>>>>>>> >>>>>>>>> ``` >>>>>>>>> diff -r 1a722ad6e23d >>>>>>>>> src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>>>> >>>>>>>>> --- >>>>>>>>> a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>>>> Tue Jul 28 09:05:36 2020 +0200 >>>>>>>>> +++ >>>>>>>>> b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>>>> Tue Jul 28 18:08:06 2020 +0900 >>>>>>>>> @@ -165,6 +165,9 @@ >>>>>>>>> >>>>>>>>> private String findFontWithCharset(FontDescriptor[] >>>>>>>>> fontDescriptors, String charset) { >>>>>>>>> String fontName = null; >>>>>>>>> + if (charset.equals("DEFAULT_CHARSET")) { >>>>>>>>> + charset = "ANSI_CHARSET"; >>>>>>>>> + } >>>>>>>>> for (int i = 0; i < fontDescriptors.length; i++) { >>>>>>>>> String componentFontName = >>>>>>>>> fontDescriptors[i].getNativeName(); >>>>>>>>> if (componentFontName.endsWith(charset)) { >>>>>>>>> ``` >>>>>>>>> >>>>>>>>> The following code is pointless as you said, so I agree with >>>>>>>>> you to remove it. >>>>>>>>> >>>>>>>>>>> if (fontName ==null) { >>>>>>>>>>> fontName = >>>>>>>>>>> findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>>>> } >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Yasumasa >>>>>>>>> >>>>>>>>> >>>>>>>>> On 2020/07/28 15:15, Philip Race wrote: >>>>>>>>>> I do see some case when default is being returned. >>>>>>>>>> >>>>>>>>>> subsetEncodingMap.put("alphabetic", "default"); >>>>>>>>>> >>>>>>>>>> which then needs an alphabetic font as part of the core >>>>>>>>>> script sequence. >>>>>>>>>> Now looking at desc.isDefaultFont() && >>>>>>>>>> charset.equals("DEFAULT_CHARSET") Perhaps that could change >>>>>>>>>> the answer in some cases you don't intend. For these UTF 8 >>>>>>>>>> locales there is nothing in the fontconfig that identifies >>>>>>>>>> the right font. The "ja" in UTF-8.ja is not connected to >>>>>>>>>> "japanese" in the fontconfig file. Something like that may be >>>>>>>>>> the right fix but it would be a bigger change. I am not sure >>>>>>>>>> how much it matters either. There just needs to be a font. In >>>>>>>>>> the win9x days and when AWT was an "A" lib not using unicode >>>>>>>>>> maybe. Or maybe there's still some benefit to the right font >>>>>>>>>> for the language still being set as the text component font >>>>>>>>>> but it is not happening anyway in this case and your fix >>>>>>>>>> won't solve that. All roads lead to the latin/alphabetic font >>>>>>>>>> here. My thinking right now is to just make changes in >>>>>>>>>> getTextComponentFontNameso it always returns something but >>>>>>>>>> only after the current code fails. >>>>>>>>>> So instead of your fix, just add this there : >>>>>>>>>> >>>>>>>>>> if (fontName ==null) { >>>>>>>>>> if (fontDescriptors.length >0) { >>>>>>>>>> return fontDescriptors[0].getNativeName(); >>>>>>>>>> }else { >>>>>>>>>> fontName ="Arial,ANSI_CHARSET"; >>>>>>>>>> } >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> Not very satisfactory but then we can remove the comment >>>>>>>>>> about maybe returning NULL. -phil. >>>>>>>>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>>>>>>>> This did start when we updated the fontconfiguration file >>>>>>>>>>> but I think there was nothing wrong with the update >>>>>>>>>>> and I found it could happen with the previous version if we >>>>>>>>>>> just remove "devanagari" from this line in the OLD version. >>>>>>>>>>> >>>>>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Removing that mimics what happened in the new version and is >>>>>>>>>>> the first piece of the puzzle. >>>>>>>>>>> >>>>>>>>>>> I don't know why devanagari is even there. Possibly it is >>>>>>>>>>> because that line was derived from this one :- >>>>>>>>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>>>>>>>> >>>>>>>>>>> since hindi was the first UTF-8 locale that was supported >>>>>>>>>>> and someone just edited it to create the JA entry. >>>>>>>>>>> >>>>>>>>>>> But it indicates to me that this is quite fragile and could >>>>>>>>>>> easily have crashed a long time ago if Devanagari were >>>>>>>>>>> not there as one of the "core fonts" for UTF-8.ja >>>>>>>>>>> >>>>>>>>>>> Then in WFontConfiguration.initTables() a few things happen >>>>>>>>>>> >>>>>>>>>>> first this >>>>>>>>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>>>>>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>>>>>>>> >>>>>>>>>>> [for devanagari JDK specifies the Mangal font.] >>>>>>>>>>> >>>>>>>>>>> the subsetEncodinging map has this for Japanese >>>>>>>>>>> subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>>>>>> >>>>>>>>>>> then this for UTF-8 for textInputCharset >>>>>>>>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>>>>>>>> textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>>>> >>>>>>>>>>> whereas for the old ms932/windows-31j code page we would >>>>>>>>>>> have had this >>>>>>>>>>> >>>>>>>>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>>>>>>>> textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>>>> >>>>>>>>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>>>>>>>> which looks like this : >>>>>>>>>>> >>>>>>>>>>> WFontConfiguration.makeAWTFontName(String platformFontName, >>>>>>>>>>> String characterSubsetName) { >>>>>>>>>>> String windowsCharset = >>>>>>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>>>>>> if (windowsCharset ==null) { >>>>>>>>>>> windowsCharset ="DEFAULT_CHARSET"; >>>>>>>>>>> } >>>>>>>>>>> return platformFontName +"," + windowsCharset; >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> For "japanese", the result of >>>>>>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>>>>>> >>>>>>>>>>> will always be"SHIFTJIS_CHARSET" >>>>>>>>>>> >>>>>>>>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>>>>>>>> and this will get stored in the FontDescriptor >>>>>>>>>>> >>>>>>>>>>> The other core entries for Japanese map to ANSI_CHARSET and >>>>>>>>>>> SYMBOL_CHARSET. >>>>>>>>>>> >>>>>>>>>>> When in the old fontconfig file is called for "devanagari", >>>>>>>>>>> it will return "Mangal,DEFAULT_CHARSET". >>>>>>>>>>> >>>>>>>>>>> Without that, there is no DEFAULT_CHARSET mapped for any >>>>>>>>>>> font in the core Japanese fonts. >>>>>>>>>>> >>>>>>>>>>> This all becomes important when >>>>>>>>>>> WFontConfiguration.getTextComponentFontName() is called from >>>>>>>>>>> native code. >>>>>>>>>>> >>>>>>>>>>> It has this line >>>>>>>>>>> String fontName = findFontWithCharset(fontDescriptors, >>>>>>>>>>> textInputCharset); >>>>>>>>>>> >>>>>>>>>>> from above we know that for UTF-8 : >>>>>>>>>>> textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>>>> >>>>>>>>>>> but as just noted above there are NO fonts tagged with that >>>>>>>>>>> >>>>>>>>>>> So the look up fails. The code retries : - >>>>>>>>>>> if (fontName ==null) { >>>>>>>>>>> fontName = >>>>>>>>>>> findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>>>> } >>>>>>>>>>> but that was pointless since DEFAULT_CHARSET is what was >>>>>>>>>>> already tried. >>>>>>>>>>> >>>>>>>>>>> Now back to the windows-31j locale, there we had >>>>>>>>>>> >>>>>>>>>>> textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>>>> >>>>>>>>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>>>>>>>> >>>>>>>>>>> getTextComponentFontName() has the comment "May return >>>>>>>>>>> null." which is true, but not very helpful to the native >>>>>>>>>>> caller, which bails out, leaving the >>>>>>>>>>> native font structs uninitialised and ready to cause a crash. >>>>>>>>>>> >>>>>>>>>>> That's the kind of analysis I was hoping for ! >>>>>>>>>>> >>>>>>>>>>> Now, the question is, is what you propose the right fix for >>>>>>>>>>> this ? >>>>>>>>>>> But I am not sure it can even work. >>>>>>>>>>> >>>>>>>>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, >>>>>>>>>>> exclusionRanges, encoding.equals("default")); seems like it >>>>>>>>>>> will never pass true in my testing. Then the whole fix falls >>>>>>>>>>> apart. Can you show some evidence ? -phil >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>>>>>>>> Hi Phil, >>>>>>>>>>>> >>>>>>>>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot >>>>>>>>>>>> find if -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>>> I guess one of the cause is the definitions in >>>>>>>>>>>> make/data/fontconfig/windows.fontconfig.properties, but >>>>>>>>>>>> also DEFAULT_CHARSET does not work at this point. >>>>>>>>>>>> >>>>>>>>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in >>>>>>>>>>>> WFontConfiguration::findFontWithCharset is set to >>>>>>>>>>>> "windows-31j" and it can find out valid font when Windows >>>>>>>>>>>> is set to Japanese locale. >>>>>>>>>>>> >>>>>>>>>>>> I can share minidump for further investigation. What should >>>>>>>>>>>> I do / share? >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> >>>>>>>>>>>> Yasumasa >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> >>>>>>>>>>>>> You're avoiding a crash but I don't yet know what >>>>>>>>>>>>> *exactly* caused the crash. >>>>>>>>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously >>>>>>>>>>>>> not the exact cause. >>>>>>>>>>>>> This just starts it and something bad presumably happens >>>>>>>>>>>>> later in native code. >>>>>>>>>>>>> >>>>>>>>>>>>> And I don't yet understand why (we think) this started >>>>>>>>>>>>> happening when some >>>>>>>>>>>>> additional fonts were added to the file. >>>>>>>>>>>>> >>>>>>>>>>>>> Knowing exactly what is wrong will help decide if this is >>>>>>>>>>>>> the right fix. >>>>>>>>>>>>> >>>>>>>>>>>>> -phil >>>>>>>>>>>>> >>>>>>>>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>>>>>>>> Hi Jay, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I share you hs_err log of this issue. >>>>>>>>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese >>>>>>>>>>>>>> locale. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I can share you if you want to know. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I tried after changing the locale to Japanese but I >>>>>>>>>>>>>>> don?t see the issue. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Also tried to reproduce the issue by enabling/disabling >>>>>>>>>>>>>>> setting "Beta:Use Unicode UTF-8 for worldwide language >>>>>>>>>>>>>>> support" in my locale setting. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> Jay >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -----Original Message----- >>>>>>>>>>>>>>> From: Yasumasa Suenaga >>>>>>>>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>>>>>>>> To: Jayathirth D v >>>>>>>>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; >>>>>>>>>>>>>>> awt-dev at openjdk.java.net >>>>>>>>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: >>>>>>>>>>>>>>> JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Jay, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I tried reproducing the issue in my Windows 10 machine >>>>>>>>>>>>>>>> with UTF-8 encoding and test file mentioned in the bug, >>>>>>>>>>>>>>>> I don?t see any crash. >>>>>>>>>>>>>>>> Am I missing something? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> OS locale may be affecting. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), >>>>>>>>>>>>>>> so WFontConfiguration attempt to find Japanese font by >>>>>>>>>>>>>>> default. >>>>>>>>>>>>>>> However WFontConfiguration cannot find out the font of >>>>>>>>>>>>>>> "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Also I think this should be in awt-dev so adding the >>>>>>>>>>>>>>>> mailing list. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>> Jay >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga >>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> PING: could you review it? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> JBS: >>>>>>>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>>>> webrev: >>>>>>>>>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>>>> Please review this change: >>>>>>>>>>>>>>>>>> JBS: >>>>>>>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>>>> webrev: >>>>>>>>>>>>>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with >>>>>>>>>>>>>>>>>> -Dfile.encoding=UTF-8, but JVM crashed due to >>>>>>>>>>>>>>>>>> internal error on fastdebug VM. I saw same call stack >>>>>>>>>>>>>>>>>> with JDK-8236161 in hs_err log. >>>>>>>>>>>>>>>>>> I investigated it, then I found out current >>>>>>>>>>>>>>>>>> implementation cannot handle default charset. >>>>>>>>>>>>>>>>>> If charset is set to UTF-8, it would be handled as >>>>>>>>>>>>>>>>>> "DEFAULT_CHARSET" in WFontConfiguration::initTables. >>>>>>>>>>>>>>>>>> However it does not affect native font name, so we >>>>>>>>>>>>>>>>>> cannot find valid font. >>>>>>>>>>>>>>>>>> This change has passed all tests on submit repo >>>>>>>>>>>>>>>>>> (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >> From alexander.zuev at oracle.com Wed Jul 29 21:28:27 2020 From: alexander.zuev at oracle.com (Alexander Zuev) Date: Wed, 29 Jul 2020 14:28:27 -0700 Subject: RFR: 8212226 SurfaceManager throws "Invalid Image variant" for MultiResolutionImage (Windows) In-Reply-To: <48870a16-57ed-4856-6bcb-83ca61e77fe1@oracle.com> References: <6f2a9c6b-5b3a-d83b-f368-ebd4bd9bfeb1@oracle.com> <633b39d0-7198-f0bd-3ff6-59dcdcfcb068@oracle.com> <88a25554-2712-0d1a-f008-f78b63fee67e@oracle.com> <48870a16-57ed-4856-6bcb-83ca61e77fe1@oracle.com> Message-ID: Ok, i see what you did there. Yes, i think that might trigger the bug. On 7/29/2020 1:11 AM, Sergey Bylokhov wrote: > On 27.07.2020 23:43, Alexander Zuev wrote: >> ?? As for the test i have a manual test that i use to reproduce the >> situation but i am not sure i can make >> the automated test case - the configuration required is quite unique. >> I tried to play with the setting >> that manages the magnification factor but changing it does not >> trigger the bug. > > I guess something like this should work: > > import java.awt.Color; > import java.awt.Graphics; > import java.awt.Graphics2D; > import java.awt.Image; > import java.awt.image.BaseMultiResolutionImage; > import java.awt.image.BufferedImage; > import java.awt.image.ImageObserver; > import java.awt.image.ImageProducer; > > import static java.awt.image.BufferedImage.TYPE_INT_RGB; > > public final class SkipRequestedImageVariant { > > ??? public static void main(String[] args) { > ??????? var mri = new BaseMultiResolutionImage(1, > generateFakeImage(), > ?????????????????????????????????????????????? generateImage(200, > Color.GREEN), > generateFakeImage()); > > ??????? BufferedImage target = new BufferedImage(500, 500, TYPE_INT_RGB); > ??????? Graphics2D g2d = target.createGraphics(); > ??????? g2d.drawImage(mri, 0, 0, 500, 500, null); > ??????? g2d.dispose(); > ??????? if (Color.GREEN.getRGB() != target.getRGB(1, 1)) { > ??????????? throw new RuntimeException("Wrong resolution variant was > used"); > ??????? } > ??? } > > ??? private static BufferedImage generateImage(int size, Color c) { > ??????? BufferedImage img = new BufferedImage(size, size, TYPE_INT_RGB); > ??????? Graphics g = img.createGraphics(); > ??????? g.setColor(c); > ??????? g.fillRect(0, 0, size, size); > ??????? g.dispose(); > ??????? return img; > ??? } > > ??? private static Image generateFakeImage() { > ??????? return new Image(){ > ??????????? @Override > ??????????? public int getWidth(ImageObserver observer) { > ??????????????? return -1; > ??????????? } > > ??????????? @Override > ??????????? public int getHeight(ImageObserver observer) { > ??????????????? return -1; > ??????????? } > > ??????????? @Override > ??????????? public ImageProducer getSource() { > ??????????????? return null; > ??????????? } > > ??????????? @Override > ??????????? public Graphics getGraphics() { > ??????????????? return null; > ??????????? } > > ??????????? @Override > ??????????? public Object getProperty(String name, ImageObserver > observer) { > ??????????????? return null; > ??????????? } > ??????? }; > ??? } > } From suenaga at oss.nttdata.com Thu Jul 30 01:17:03 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Thu, 30 Jul 2020 10:17:03 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <5F219A8D.2060809@oracle.com> References: <08EA7F9E-94BF-421D-B73A-912CE402E8A5@oracle.com> <7ed89d94-4c4e-f895-242a-8d266e4513f6@oss.nttdata.com> <5F219A8D.2060809@oracle.com> Message-ID: <3fbf2c4d-2bd8-b12c-8528-89adf3bd8c34@oss.nttdata.com> Thanks Phil! Yasumasa On 2020/07/30 0:49, Philip Race wrote: > Ok. Approved. > > I assume no one found a way to provoke this without changing the Windows system locale > so we can't create a test. > > -phil. > > On 7/28/20, 10:40 PM, Yasumasa Suenaga wrote: >> On 2020/07/29 11:27, Phil Race wrote: >>> Did you copy/paste my typo ? Looks like a . not a , in the string literal. >> >> Fixed: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.03/ >> >> Yasumasa >> >> >>> -Phil. >>> >>>> On Jul 28, 2020, at 6:52 PM, Yasumasa Suenaga wrote: >>>> >>>> ?Hi Phil, Sergey, >>>> >>>> Sorry, I missed. null is WComponentPeer::pData, not defaultFont. >>>> I removed the change for WFontPeer from new webrev. >>>> >>>> ? http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.02/ >>>> >>>> If you are ok this, I will push it to jdk/client. >>>> >>>> >>>> Thanks, >>>> >>>> Yasumasa >>>> >>>> >>>>> On 2020/07/29 10:21, Philip Race wrote: >>>>> The change in WFontConfiguration looks good but I have no idea >>>>> what the change in WComponentPeer is supposed to achieve. >>>>> "new Font()" won't fail. And the constructor is VERY lazy. >>>>> It sets fields and returns. That's all. >>>>> -phil. >>>>>> On 7/28/20, 6:10 PM, Yasumasa Suenaga wrote: >>>>>> On 2020/07/29 9:49, Philip Race wrote: >>>>>>> >>>>>>> >>>>>>> On 7/28/20, 5:35 PM, Yasumasa Suenaga wrote: >>>>>>>> Hi Phil, >>>>>>>> >>>>>>>> Thanks for explanation. >>>>>>>> >>>>>>>> findFontWithCharset() does not have comments, so I cannot evaluate my proposal whether it breaks important behavior, but I almost agree with your change. >>>>>>>> >>>>>>>> However... >>>>>>>> >>>>>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>>>>> instead of the current >>>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>>>>> >>>>>>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>>>>> >>>>>>>> then isn't it dangerous "Arial,ANSI_CHARSET" is set to fontName forced? >>>>>>> >>>>>>> Nope, because the problem is that we may to return anything from this method (ie >>>>>>> return null instead). This is obviously not null so is fine. >>>>>> >>>>>> Ok, so how about this change? >>>>>> >>>>>> ?? http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.01/ >>>>>> >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>>> -phil. >>>>>>> >>>>>>> >>>>>>>> >>>>>>>>>>> if (fontName ==null) { >>>>>>>>>>> ????? if (fontDescriptors.length >0) { >>>>>>>>>>> ??????? return fontDescriptors[0].getNativeName(); >>>>>>>>>>> ????? }else { >>>>>>>>>>> ????????? fontName ="Arial,ANSI_CHARSET"; >>>>>>>>>>> ???? } >>>>>>>>>>> } >>>>>>>> >>>>>>>> The direct cause of the crash which I saw is WComponentPeer::defaultFont was null. >>>>>>>> So I think we need to assertion to check WComponentPeer::defaultFont is not null as a safeguard. >>>>>>>> >>>>>>>> How about this change? >>>>>>>> >>>>>>>> ``` >>>>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>>>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Tue Jul 28 09:05:36 2020 +0200 >>>>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Wed Jul 29 09:32:00 2020 +0900 >>>>>>>> @@ -56,6 +56,7 @@ >>>>>>>> ? import java.awt.image.VolatileImage; >>>>>>>> ? import java.awt.peer.ComponentPeer; >>>>>>>> ? import java.awt.peer.ContainerPeer; >>>>>>>> +import java.util.Objects; >>>>>>>> >>>>>>>> ? import sun.awt.AWTAccessor; >>>>>>>> ? import sun.awt.PaintEventDispatcher; >>>>>>>> @@ -579,7 +580,12 @@ >>>>>>>> ????? } >>>>>>>> >>>>>>>> ????? // fallback default font object >>>>>>>> -??? static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>>>>> +??? static final Font defaultFont; >>>>>>>> + >>>>>>>> +??? static { >>>>>>>> +??????? defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>>>>> +??????? Objects.requireNonNull(defaultFont, "default font must not be null"); >>>>>>>> +??? } >>>>>>>> >>>>>>>> ????? @Override >>>>>>>> ????? public Graphics getGraphics() { >>>>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Wed Jul 29 09:32:00 2020 +0900 >>>>>>>> @@ -157,9 +157,12 @@ >>>>>>>> ????? public String getTextComponentFontName(String familyName, int style) { >>>>>>>> ????????? FontDescriptor[] fontDescriptors = getFontDescriptors(familyName, style); >>>>>>>> ????????? String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>>>> -??????? if (fontName == null) { >>>>>>>> +??????? if ((fontName == null) && !textInputCharset.equals("DEFAULT_CHARSET")) { >>>>>>>> ????????????? fontName = findFontWithCharset(fontDescriptors, "DEFAULT_CHARSET"); >>>>>>>> ????????? } >>>>>>>> +??????? if ((fontName == null) && (fontDescriptors.length > 0)) { >>>>>>>> +??????????? fontName = fontDescriptors[0].getNativeName(); >>>>>>>> +??????? } >>>>>>>> ????????? return fontName; >>>>>>>> ????? } >>>>>>>> >>>>>>>> ``` >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>> On 2020/07/28 23:43, Philip Race wrote: >>>>>>>>> 1) You assume there is a font with ANSI_CHARSET in the list. >>>>>>>>> I thought I already tried to point out that if the entry looked like this >>>>>>>>> >>>>>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>>>>> instead of the current >>>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>>>>> >>>>>>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>>>>>> >>>>>>>>> 2) changing findFontWithCharset is still the wrong/more dangerous place to change this. >>>>>>>>> You may be uninintentionally changing behaviour. >>>>>>>>> >>>>>>>>> My proposal won't break anything. It just finds a fall back when otherwise we'd crash. >>>>>>>>> >>>>>>>>> I am not sure any of the CHARSET selections matter any more when using a unicode locale. >>>>>>>>> It is mainly about selecting the most appropriate font. >>>>>>>>> >>>>>>>>> And that isn't going to work with out more changes. >>>>>>>>> >>>>>>>>> At the very least we have to augment these >>>>>>>>> ????????? subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >>>>>>>>> ????????? subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>>>> >>>>>>>>> with *something like* >>>>>>>>> >>>>>>>>> ????????? subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >>>>>>>>> ????????? subsetEncodingMap.put("japanese-utf8", "utf-8"); >>>>>>>>> >>>>>>>>> and also update the fontconfig file to have >>>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >>>>>>>>> >>>>>>>>> and lots of fontconfig change like adding >>>>>>>>> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >>>>>>>>> >>>>>>>>> I haven't thought that through to see if this is exactly right but it is what is really missing IMO. >>>>>>>>> >>>>>>>>> However having done all of that it still doesn't change that >>>>>>>>> 1) There is the possibility of? a crash if not done right >>>>>>>>> 2) It isn't clear that it *really matters*. >>>>>>>>> >>>>>>>>> And a rearchitecture of this file and the supporting code is beyond the scope of what we want to do today ... >>>>>>>>> >>>>>>>>> -phil >>>>>>>>> >>>>>>>>> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>>>>>>>>> Hi Phil >>>>>>>>>> >>>>>>>>>> Thank you so much for further investigation! >>>>>>>>>> Your change works fine on my Windows which is set to Japanese locale. >>>>>>>>>> >>>>>>>>>> However I wonder the meanings of "DEFAULT_CHARSET". It does not appear to be working, right? >>>>>>>>>> >>>>>>>>>> To my understand, alphabetic font should be used if "DEFAULT_CHARSET" is chosen. >>>>>>>>>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>>>>>>>>> >>>>>>>>>> Thus I think we can fix as below: >>>>>>>>>> >>>>>>>>>> ``` >>>>>>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>>>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 18:08:06 2020 +0900 >>>>>>>>>> @@ -165,6 +165,9 @@ >>>>>>>>>> >>>>>>>>>> ????? private String findFontWithCharset(FontDescriptor[] fontDescriptors, String charset) { >>>>>>>>>> ????????? String fontName = null; >>>>>>>>>> +??????? if (charset.equals("DEFAULT_CHARSET")) { >>>>>>>>>> +??????????? charset = "ANSI_CHARSET"; >>>>>>>>>> +??????? } >>>>>>>>>> ????????? for (int i = 0; i < fontDescriptors.length; i++) { >>>>>>>>>> ????????????? String componentFontName = fontDescriptors[i].getNativeName(); >>>>>>>>>> ????????????? if (componentFontName.endsWith(charset)) { >>>>>>>>>> ``` >>>>>>>>>> >>>>>>>>>> The following code is pointless as you said, so I agree with you to remove it. >>>>>>>>>> >>>>>>>>>>>> if (fontName ==null) { >>>>>>>>>>>> ????? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 2020/07/28 15:15, Philip Race wrote: >>>>>>>>>>> I do see some case when default is being returned. >>>>>>>>>>> >>>>>>>>>>> subsetEncodingMap.put("alphabetic", "default"); >>>>>>>>>>> >>>>>>>>>>> which then needs an alphabetic font as part of the core script sequence. >>>>>>>>>>> Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. >>>>>>>>>>> So instead of your fix, just add this there : >>>>>>>>>>> >>>>>>>>>>> if (fontName ==null) { >>>>>>>>>>> ????? if (fontDescriptors.length >0) { >>>>>>>>>>> ??????? return fontDescriptors[0].getNativeName(); >>>>>>>>>>> ????? }else { >>>>>>>>>>> ????????? fontName ="Arial,ANSI_CHARSET"; >>>>>>>>>>> ???? } >>>>>>>>>>> } >>>>>>>>>>> >>>>>>>>>>> Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. >>>>>>>>>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>>>>>>>>> This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update >>>>>>>>>>>> and I found it could happen with the previous? version if we just remove "devanagari" from this line in the OLD version. >>>>>>>>>>>> >>>>>>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>>>>>>>>> >>>>>>>>>>>> Removing that mimics what happened in the new version and is the first piece of the puzzle. >>>>>>>>>>>> >>>>>>>>>>>> I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- >>>>>>>>>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>>>>>>>>> since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. >>>>>>>>>>>> >>>>>>>>>>>> But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were >>>>>>>>>>>> not there as one of the "core fonts" for UTF-8.ja >>>>>>>>>>>> >>>>>>>>>>>> Then in WFontConfiguration.initTables() a few things happen >>>>>>>>>>>> >>>>>>>>>>>> first this >>>>>>>>>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>>>>>>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>>>>>>>>> >>>>>>>>>>>> [for devanagari JDK specifies the Mangal font.] >>>>>>>>>>>> >>>>>>>>>>>> the subsetEncodinging map has this for Japanese >>>>>>>>>>>> ?? subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>>>>>>> >>>>>>>>>>>> then this for UTF-8 for textInputCharset >>>>>>>>>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>>>>>>>>> ????? textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>>>>> >>>>>>>>>>>> whereas for the old ms932/windows-31j code page we would have had this >>>>>>>>>>>> >>>>>>>>>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>>>>>>>>> ????? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>>>>> >>>>>>>>>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>>>>>>>>> which looks like this : >>>>>>>>>>>> >>>>>>>>>>>> WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { >>>>>>>>>>>> ????? String windowsCharset = subsetCharsetMap.get(characterSubsetName); >>>>>>>>>>>> ????? if (windowsCharset ==null) { >>>>>>>>>>>> ????????? windowsCharset ="DEFAULT_CHARSET"; >>>>>>>>>>>> ????? } >>>>>>>>>>>> ????? return platformFontName +"," + windowsCharset; >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> For "japanese", the result of >>>>>>>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>>>>>>> >>>>>>>>>>>> will always be"SHIFTJIS_CHARSET" >>>>>>>>>>>> >>>>>>>>>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>>>>>>>>> and this will get stored in the FontDescriptor >>>>>>>>>>>> >>>>>>>>>>>> The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. >>>>>>>>>>>> >>>>>>>>>>>> When in the old fontconfig file? is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". >>>>>>>>>>>> >>>>>>>>>>>> Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. >>>>>>>>>>>> >>>>>>>>>>>> This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. >>>>>>>>>>>> >>>>>>>>>>>> It has this line >>>>>>>>>>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>>>>>>>> >>>>>>>>>>>> from above we know that for UTF-8 : >>>>>>>>>>>> ????? textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>>>>> >>>>>>>>>>>> but as just noted above there are NO fonts tagged with that >>>>>>>>>>>> >>>>>>>>>>>> So the look up fails. The code retries : - >>>>>>>>>>>> if (fontName ==null) { >>>>>>>>>>>> ????? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>>>>> } >>>>>>>>>>>> ?? but that was pointless since DEFAULT_CHARSET is what was already tried. >>>>>>>>>>>> >>>>>>>>>>>> Now back to the windows-31j locale, there we had >>>>>>>>>>>> >>>>>>>>>>>> ????? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>>>>> >>>>>>>>>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>>>>>>>>> >>>>>>>>>>>> ?? getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the >>>>>>>>>>>> native font structs uninitialised and ready to cause a crash. >>>>>>>>>>>> >>>>>>>>>>>> That's the kind of analysis I was hoping for ! >>>>>>>>>>>> >>>>>>>>>>>> Now, the question is, is what you propose the right fix for this ? >>>>>>>>>>>> But I am not sure it can even work. >>>>>>>>>>>> >>>>>>>>>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>>>>>>>>> Hi Phil, >>>>>>>>>>>>> >>>>>>>>>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>>>> I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. >>>>>>>>>>>>> >>>>>>>>>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. >>>>>>>>>>>>> >>>>>>>>>>>>> I can share minidump for further investigation. What should I do / share? >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> >>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>> >>>>>>>>>>>>>> You're avoiding a crash but I don't yet know what *exactly* caused the crash. >>>>>>>>>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. >>>>>>>>>>>>>> This just starts it and something bad presumably happens later in native code. >>>>>>>>>>>>>> >>>>>>>>>>>>>> And I don't yet understand why (we think) this started happening when some >>>>>>>>>>>>>> additional fonts were added to the file. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Knowing exactly what is wrong will help decide if this is the right fix. >>>>>>>>>>>>>> >>>>>>>>>>>>>> -phil >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>> Hi Jay, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I share you hs_err log of this issue. >>>>>>>>>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I can share you if you want to know. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> I tried after changing the locale to Japanese but I don?t see the issue. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>> Jay >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -----Original Message----- >>>>>>>>>>>>>>>> From: Yasumasa Suenaga >>>>>>>>>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>>>>>>>>> To: Jayathirth D v >>>>>>>>>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>>>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Jay, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>>>>>>>>>>>>>>> Am I missing something? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> OS locale may be affecting. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>>>>>>>>>>>>>>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>> Jay >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> PING: could you review it? >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> ???? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>>>>> ???? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>>>>> Please review this change: >>>>>>>>>>>>>>>>>>> ???? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>>>>> ???? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>>>>>>>>>>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>>>>>>>>>>>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>>>>>>>>>>>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>> From Sergey.Bylokhov at oracle.com Thu Jul 30 02:03:10 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Wed, 29 Jul 2020 19:03:10 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> <5F2039A4.6040807@oracle.com> <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> <5F20C7A4.2010002@oracle.com> <98367096-a1d4-9a35-5e35-3ce27b96bc5c@oss.nttdata.com> <5F20CEFE.80806@oracle.com> Message-ID: On 28.07.2020 18:52, Yasumasa Suenaga wrote: > Hi Phil, Sergey, > > Sorry, I missed. null is WComponentPeer::pData, not defaultFont. Could you please clarify in what exact place access to the null pData in WComponentPeer caused a crash? > I removed the change for WFontPeer from new webrev. > > ? http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.02/ > > If you are ok this, I will push it to jdk/client. > > > Thanks, > > Yasumasa > > > On 2020/07/29 10:21, Philip Race wrote: >> The change in WFontConfiguration looks good but I have no idea >> what the change in WComponentPeer is supposed to achieve. >> "new Font()" won't fail. And the constructor is VERY lazy. >> It sets fields and returns. That's all. >> >> -phil. >> >> On 7/28/20, 6:10 PM, Yasumasa Suenaga wrote: >>> On 2020/07/29 9:49, Philip Race wrote: >>>> >>>> >>>> On 7/28/20, 5:35 PM, Yasumasa Suenaga wrote: >>>>> Hi Phil, >>>>> >>>>> Thanks for explanation. >>>>> >>>>> findFontWithCharset() does not have comments, so I cannot evaluate my proposal whether it breaks important behavior, but I almost agree with your change. >>>>> >>>>> However... >>>>> >>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>> instead of the current >>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>> >>>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>> >>>>> then isn't it dangerous "Arial,ANSI_CHARSET" is set to fontName forced? >>>> >>>> Nope, because the problem is that we may to return anything from this method (ie >>>> return null instead). This is obviously not null so is fine. >>> >>> Ok, so how about this change? >>> >>> ? http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.01/ >>> >>> >>> Yasumasa >>> >>> >>>> -phil. >>>> >>>> >>>>> >>>>>>>> if (fontName ==null) { >>>>>>>> ???? if (fontDescriptors.length >0) { >>>>>>>> ?????? return fontDescriptors[0].getNativeName(); >>>>>>>> ???? }else { >>>>>>>> ???????? fontName ="Arial,ANSI_CHARSET"; >>>>>>>> ??? } >>>>>>>> } >>>>> >>>>> The direct cause of the crash which I saw is WComponentPeer::defaultFont was null. >>>>> So I think we need to assertion to check WComponentPeer::defaultFont is not null as a safeguard. >>>>> >>>>> How about this change? >>>>> >>>>> ``` >>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Tue Jul 28 09:05:36 2020 +0200 >>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Wed Jul 29 09:32:00 2020 +0900 >>>>> @@ -56,6 +56,7 @@ >>>>> ?import java.awt.image.VolatileImage; >>>>> ?import java.awt.peer.ComponentPeer; >>>>> ?import java.awt.peer.ContainerPeer; >>>>> +import java.util.Objects; >>>>> >>>>> ?import sun.awt.AWTAccessor; >>>>> ?import sun.awt.PaintEventDispatcher; >>>>> @@ -579,7 +580,12 @@ >>>>> ???? } >>>>> >>>>> ???? // fallback default font object >>>>> -??? static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>> +??? static final Font defaultFont; >>>>> + >>>>> +??? static { >>>>> +??????? defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>> +??????? Objects.requireNonNull(defaultFont, "default font must not be null"); >>>>> +??? } >>>>> >>>>> ???? @Override >>>>> ???? public Graphics getGraphics() { >>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Wed Jul 29 09:32:00 2020 +0900 >>>>> @@ -157,9 +157,12 @@ >>>>> ???? public String getTextComponentFontName(String familyName, int style) { >>>>> ???????? FontDescriptor[] fontDescriptors = getFontDescriptors(familyName, style); >>>>> ???????? String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>> -??????? if (fontName == null) { >>>>> +??????? if ((fontName == null) && !textInputCharset.equals("DEFAULT_CHARSET")) { >>>>> ???????????? fontName = findFontWithCharset(fontDescriptors, "DEFAULT_CHARSET"); >>>>> ???????? } >>>>> +??????? if ((fontName == null) && (fontDescriptors.length > 0)) { >>>>> +??????????? fontName = fontDescriptors[0].getNativeName(); >>>>> +??????? } >>>>> ???????? return fontName; >>>>> ???? } >>>>> >>>>> ``` >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> Yasumasa >>>>> >>>>> >>>>> On 2020/07/28 23:43, Philip Race wrote: >>>>>> 1) You assume there is a font with ANSI_CHARSET in the list. >>>>>> I thought I already tried to point out that if the entry looked like this >>>>>> >>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>> instead of the current >>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>> >>>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>>> >>>>>> 2) changing findFontWithCharset is still the wrong/more dangerous place to change this. >>>>>> You may be uninintentionally changing behaviour. >>>>>> >>>>>> My proposal won't break anything. It just finds a fall back when otherwise we'd crash. >>>>>> >>>>>> I am not sure any of the CHARSET selections matter any more when using a unicode locale. >>>>>> It is mainly about selecting the most appropriate font. >>>>>> >>>>>> And that isn't going to work with out more changes. >>>>>> >>>>>> At the very least we have to augment these >>>>>> ???????? subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >>>>>> ???????? subsetEncodingMap.put("japanese", "windows-31j"); >>>>>> >>>>>> with *something like* >>>>>> >>>>>> ???????? subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >>>>>> ???????? subsetEncodingMap.put("japanese-utf8", "utf-8"); >>>>>> >>>>>> and also update the fontconfig file to have >>>>>> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >>>>>> >>>>>> and lots of fontconfig change like adding >>>>>> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >>>>>> >>>>>> I haven't thought that through to see if this is exactly right but it is what is really missing IMO. >>>>>> >>>>>> However having done all of that it still doesn't change that >>>>>> 1) There is the possibility of? a crash if not done right >>>>>> 2) It isn't clear that it *really matters*. >>>>>> >>>>>> And a rearchitecture of this file and the supporting code is beyond the scope of what we want to do today ... >>>>>> >>>>>> -phil >>>>>> >>>>>> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>>>>>> Hi Phil >>>>>>> >>>>>>> Thank you so much for further investigation! >>>>>>> Your change works fine on my Windows which is set to Japanese locale. >>>>>>> >>>>>>> However I wonder the meanings of "DEFAULT_CHARSET". It does not appear to be working, right? >>>>>>> >>>>>>> To my understand, alphabetic font should be used if "DEFAULT_CHARSET" is chosen. >>>>>>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>>>>>> >>>>>>> Thus I think we can fix as below: >>>>>>> >>>>>>> ``` >>>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 18:08:06 2020 +0900 >>>>>>> @@ -165,6 +165,9 @@ >>>>>>> >>>>>>> ???? private String findFontWithCharset(FontDescriptor[] fontDescriptors, String charset) { >>>>>>> ???????? String fontName = null; >>>>>>> +??????? if (charset.equals("DEFAULT_CHARSET")) { >>>>>>> +??????????? charset = "ANSI_CHARSET"; >>>>>>> +??????? } >>>>>>> ???????? for (int i = 0; i < fontDescriptors.length; i++) { >>>>>>> ???????????? String componentFontName = fontDescriptors[i].getNativeName(); >>>>>>> ???????????? if (componentFontName.endsWith(charset)) { >>>>>>> ``` >>>>>>> >>>>>>> The following code is pointless as you said, so I agree with you to remove it. >>>>>>> >>>>>>>>> if (fontName ==null) { >>>>>>>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>> } >>>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> Yasumasa >>>>>>> >>>>>>> >>>>>>> On 2020/07/28 15:15, Philip Race wrote: >>>>>>>> I do see some case when default is being returned. >>>>>>>> >>>>>>>> subsetEncodingMap.put("alphabetic", "default"); >>>>>>>> >>>>>>>> which then needs an alphabetic font as part of the core script sequence. >>>>>>>> Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. >>>>>>>> So instead of your fix, just add this there : >>>>>>>> >>>>>>>> if (fontName ==null) { >>>>>>>> ???? if (fontDescriptors.length >0) { >>>>>>>> ?????? return fontDescriptors[0].getNativeName(); >>>>>>>> ???? }else { >>>>>>>> ???????? fontName ="Arial,ANSI_CHARSET"; >>>>>>>> ??? } >>>>>>>> } >>>>>>>> >>>>>>>> Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. >>>>>>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>>>>>> This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update >>>>>>>>> and I found it could happen with the previous? version if we just remove "devanagari" from this line in the OLD version. >>>>>>>>> >>>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>>>>>> >>>>>>>>> Removing that mimics what happened in the new version and is the first piece of the puzzle. >>>>>>>>> >>>>>>>>> I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- >>>>>>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>>>>>> since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. >>>>>>>>> >>>>>>>>> But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were >>>>>>>>> not there as one of the "core fonts" for UTF-8.ja >>>>>>>>> >>>>>>>>> Then in WFontConfiguration.initTables() a few things happen >>>>>>>>> >>>>>>>>> first this >>>>>>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>>>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>>>>>> >>>>>>>>> [for devanagari JDK specifies the Mangal font.] >>>>>>>>> >>>>>>>>> the subsetEncodinging map has this for Japanese >>>>>>>>> ? subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>>>> >>>>>>>>> then this for UTF-8 for textInputCharset >>>>>>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>>>>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>> >>>>>>>>> whereas for the old ms932/windows-31j code page we would have had this >>>>>>>>> >>>>>>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>>>>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>> >>>>>>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>>>>>> which looks like this : >>>>>>>>> >>>>>>>>> WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { >>>>>>>>> ???? String windowsCharset = subsetCharsetMap.get(characterSubsetName); >>>>>>>>> ???? if (windowsCharset ==null) { >>>>>>>>> ???????? windowsCharset ="DEFAULT_CHARSET"; >>>>>>>>> ???? } >>>>>>>>> ???? return platformFontName +"," + windowsCharset; >>>>>>>>> } >>>>>>>>> >>>>>>>>> For "japanese", the result of >>>>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>>>> >>>>>>>>> will always be"SHIFTJIS_CHARSET" >>>>>>>>> >>>>>>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>>>>>> and this will get stored in the FontDescriptor >>>>>>>>> >>>>>>>>> The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. >>>>>>>>> >>>>>>>>> When in the old fontconfig file? is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". >>>>>>>>> >>>>>>>>> Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. >>>>>>>>> >>>>>>>>> This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. >>>>>>>>> >>>>>>>>> It has this line >>>>>>>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>>>>> >>>>>>>>> from above we know that for UTF-8 : >>>>>>>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>> >>>>>>>>> but as just noted above there are NO fonts tagged with that >>>>>>>>> >>>>>>>>> So the look up fails. The code retries : - >>>>>>>>> if (fontName ==null) { >>>>>>>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>> } >>>>>>>>> ? but that was pointless since DEFAULT_CHARSET is what was already tried. >>>>>>>>> >>>>>>>>> Now back to the windows-31j locale, there we had >>>>>>>>> >>>>>>>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>> >>>>>>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>>>>>> >>>>>>>>> ? getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the >>>>>>>>> native font structs uninitialised and ready to cause a crash. >>>>>>>>> >>>>>>>>> That's the kind of analysis I was hoping for ! >>>>>>>>> >>>>>>>>> Now, the question is, is what you propose the right fix for this ? >>>>>>>>> But I am not sure it can even work. >>>>>>>>> >>>>>>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil >>>>>>>>> >>>>>>>>> >>>>>>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>>>>>> Hi Phil, >>>>>>>>>> >>>>>>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. >>>>>>>>>> I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. >>>>>>>>>> >>>>>>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. >>>>>>>>>> >>>>>>>>>> I can share minidump for further investigation. What should I do / share? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> Yasumasa >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>>>>>> Hi, >>>>>>>>>>> >>>>>>>>>>> You're avoiding a crash but I don't yet know what *exactly* caused the crash. >>>>>>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. >>>>>>>>>>> This just starts it and something bad presumably happens later in native code. >>>>>>>>>>> >>>>>>>>>>> And I don't yet understand why (we think) this started happening when some >>>>>>>>>>> additional fonts were added to the file. >>>>>>>>>>> >>>>>>>>>>> Knowing exactly what is wrong will help decide if this is the right fix. >>>>>>>>>>> >>>>>>>>>>> -phil >>>>>>>>>>> >>>>>>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>>>>>> Hi Jay, >>>>>>>>>>>> >>>>>>>>>>>> I share you hs_err log of this issue. >>>>>>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>>>>>>> >>>>>>>>>>>> I can share you if you want to know. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> >>>>>>>>>>>> Yasumasa >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>> >>>>>>>>>>>>> I tried after changing the locale to Japanese but I don?t see the issue. >>>>>>>>>>>>> >>>>>>>>>>>>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>>>>>>>>>>>> >>>>>>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Jay >>>>>>>>>>>>> >>>>>>>>>>>>> -----Original Message----- >>>>>>>>>>>>> From: Yasumasa Suenaga >>>>>>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>>>>>> To: Jayathirth D v >>>>>>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>>>>>> >>>>>>>>>>>>> Hi Jay, >>>>>>>>>>>>> >>>>>>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>>>>>>>>>>>> Am I missing something? >>>>>>>>>>>>> >>>>>>>>>>>>> OS locale may be affecting. >>>>>>>>>>>>> >>>>>>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>>>>>>>>>>>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> >>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Jay >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> PING: could you review it? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>> Please review this change: >>>>>>>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>>>>>>>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>>>>>>>>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>>>>>>>>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>> >>>>>>>>> >>>>>>>> -- Best regards, Sergey. From suenaga at oss.nttdata.com Thu Jul 30 02:37:13 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Thu, 30 Jul 2020 11:37:13 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> <5F2039A4.6040807@oracle.com> <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> <5F20C7A4.2010002@oracle.com> <98367096-a1d4-9a35-5e35-3ce27b96bc5c@oss.nttdata.com> <5F20CEFE.80806@oracle.com> Message-ID: On 2020/07/30 11:03, Sergey Bylokhov wrote: > On 28.07.2020 18:52, Yasumasa Suenaga wrote: >> Hi Phil, Sergey, >> >> Sorry, I missed. null is WComponentPeer::pData, not defaultFont. > > Could you please clarify in what exact place access to the null pData in WComponentPeer caused a crash? src/java.desktop/windows/native/libawt/windows/awt_Component.cpp 6032 AwtFont *awtFont = (AwtFont *)env->GetLongField(font, AwtFont::pDataID); 6033 if (awtFont == NULL) { 6034 /*arguments of AwtFont::Create are changed for multifont component */ 6035 awtFont = AwtFont::Create(env, font); 6036 } 6037 env->SetLongField(font, AwtFont::pDataID, (jlong)awtFont); 6038 6039 c->SetFont(awtFont); // <-- awtFont in above is NULL. Do you agree with webrev.03 which has been reviewed by Phil? Thanks, Yasumasa >> I removed the change for WFontPeer from new webrev. >> >> ?? http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.02/ >> >> If you are ok this, I will push it to jdk/client. >> >> >> Thanks, >> >> Yasumasa >> >> >> On 2020/07/29 10:21, Philip Race wrote: >>> The change in WFontConfiguration looks good but I have no idea >>> what the change in WComponentPeer is supposed to achieve. >>> "new Font()" won't fail. And the constructor is VERY lazy. >>> It sets fields and returns. That's all. >>> >>> -phil. >>> >>> On 7/28/20, 6:10 PM, Yasumasa Suenaga wrote: >>>> On 2020/07/29 9:49, Philip Race wrote: >>>>> >>>>> >>>>> On 7/28/20, 5:35 PM, Yasumasa Suenaga wrote: >>>>>> Hi Phil, >>>>>> >>>>>> Thanks for explanation. >>>>>> >>>>>> findFontWithCharset() does not have comments, so I cannot evaluate my proposal whether it breaks important behavior, but I almost agree with your change. >>>>>> >>>>>> However... >>>>>> >>>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>>> instead of the current >>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>>> >>>>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>>> >>>>>> then isn't it dangerous "Arial,ANSI_CHARSET" is set to fontName forced? >>>>> >>>>> Nope, because the problem is that we may to return anything from this method (ie >>>>> return null instead). This is obviously not null so is fine. >>>> >>>> Ok, so how about this change? >>>> >>>> ? http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.01/ >>>> >>>> >>>> Yasumasa >>>> >>>> >>>>> -phil. >>>>> >>>>> >>>>>> >>>>>>>>> if (fontName ==null) { >>>>>>>>> ???? if (fontDescriptors.length >0) { >>>>>>>>> ?????? return fontDescriptors[0].getNativeName(); >>>>>>>>> ???? }else { >>>>>>>>> ???????? fontName ="Arial,ANSI_CHARSET"; >>>>>>>>> ??? } >>>>>>>>> } >>>>>> >>>>>> The direct cause of the crash which I saw is WComponentPeer::defaultFont was null. >>>>>> So I think we need to assertion to check WComponentPeer::defaultFont is not null as a safeguard. >>>>>> >>>>>> How about this change? >>>>>> >>>>>> ``` >>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java >>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Tue Jul 28 09:05:36 2020 +0200 >>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WComponentPeer.java Wed Jul 29 09:32:00 2020 +0900 >>>>>> @@ -56,6 +56,7 @@ >>>>>> ?import java.awt.image.VolatileImage; >>>>>> ?import java.awt.peer.ComponentPeer; >>>>>> ?import java.awt.peer.ContainerPeer; >>>>>> +import java.util.Objects; >>>>>> >>>>>> ?import sun.awt.AWTAccessor; >>>>>> ?import sun.awt.PaintEventDispatcher; >>>>>> @@ -579,7 +580,12 @@ >>>>>> ???? } >>>>>> >>>>>> ???? // fallback default font object >>>>>> -??? static final Font defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>>> +??? static final Font defaultFont; >>>>>> + >>>>>> +??? static { >>>>>> +??????? defaultFont = new Font(Font.DIALOG, Font.PLAIN, 12); >>>>>> +??????? Objects.requireNonNull(defaultFont, "default font must not be null"); >>>>>> +??? } >>>>>> >>>>>> ???? @Override >>>>>> ???? public Graphics getGraphics() { >>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Wed Jul 29 09:32:00 2020 +0900 >>>>>> @@ -157,9 +157,12 @@ >>>>>> ???? public String getTextComponentFontName(String familyName, int style) { >>>>>> ???????? FontDescriptor[] fontDescriptors = getFontDescriptors(familyName, style); >>>>>> ???????? String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>> -??????? if (fontName == null) { >>>>>> +??????? if ((fontName == null) && !textInputCharset.equals("DEFAULT_CHARSET")) { >>>>>> ???????????? fontName = findFontWithCharset(fontDescriptors, "DEFAULT_CHARSET"); >>>>>> ???????? } >>>>>> +??????? if ((fontName == null) && (fontDescriptors.length > 0)) { >>>>>> +??????????? fontName = fontDescriptors[0].getNativeName(); >>>>>> +??????? } >>>>>> ???????? return fontName; >>>>>> ???? } >>>>>> >>>>>> ``` >>>>>> >>>>>> >>>>>> Thanks, >>>>>> >>>>>> Yasumasa >>>>>> >>>>>> >>>>>> On 2020/07/28 23:43, Philip Race wrote: >>>>>>> 1) You assume there is a font with ANSI_CHARSET in the list. >>>>>>> I thought I already tried to point out that if the entry looked like this >>>>>>> >>>>>>> sequence.allfonts.UTF-8.ja=japanese,dingbats,symbol >>>>>>> instead of the current >>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,dingbats,symbol >>>>>>> >>>>>>> then I am not sure your fix in-line below will find anything and we'll still crash. >>>>>>> >>>>>>> 2) changing findFontWithCharset is still the wrong/more dangerous place to change this. >>>>>>> You may be uninintentionally changing behaviour. >>>>>>> >>>>>>> My proposal won't break anything. It just finds a fall back when otherwise we'd crash. >>>>>>> >>>>>>> I am not sure any of the CHARSET selections matter any more when using a unicode locale. >>>>>>> It is mainly about selecting the most appropriate font. >>>>>>> >>>>>>> And that isn't going to work with out more changes. >>>>>>> >>>>>>> At the very least we have to augment these >>>>>>> ???????? subsetCharsetMap.put("japanese", "SHIFTJIS_CHARSET"); >>>>>>> ???????? subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>> >>>>>>> with *something like* >>>>>>> >>>>>>> ???????? subsetCharsetMap.put("ja_utf8", "DEFAULT_CHARSET"); >>>>>>> ???????? subsetEncodingMap.put("japanese-utf8", "utf-8"); >>>>>>> >>>>>>> and also update the fontconfig file to have >>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,ja_utf8,dingbats,symbol >>>>>>> >>>>>>> and lots of fontconfig change like adding >>>>>>> sequence.serif.japanese-utf8=alphabetic,ja_utf8,dingbats,symbol >>>>>>> >>>>>>> I haven't thought that through to see if this is exactly right but it is what is really missing IMO. >>>>>>> >>>>>>> However having done all of that it still doesn't change that >>>>>>> 1) There is the possibility of? a crash if not done right >>>>>>> 2) It isn't clear that it *really matters*. >>>>>>> >>>>>>> And a rearchitecture of this file and the supporting code is beyond the scope of what we want to do today ... >>>>>>> >>>>>>> -phil >>>>>>> >>>>>>> On 7/28/20, 2:21 AM, Yasumasa Suenaga wrote: >>>>>>>> Hi Phil >>>>>>>> >>>>>>>> Thank you so much for further investigation! >>>>>>>> Your change works fine on my Windows which is set to Japanese locale. >>>>>>>> >>>>>>>> However I wonder the meanings of "DEFAULT_CHARSET". It does not appear to be working, right? >>>>>>>> >>>>>>>> To my understand, alphabetic font should be used if "DEFAULT_CHARSET" is chosen. >>>>>>>> (So I think your change may be chosen "Arial,ANSI_CHARSET") >>>>>>>> >>>>>>>> Thus I think we can fix as below: >>>>>>>> >>>>>>>> ``` >>>>>>>> diff -r 1a722ad6e23d src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java >>>>>>>> --- a/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 09:05:36 2020 +0200 >>>>>>>> +++ b/src/java.desktop/windows/classes/sun/awt/windows/WFontConfiguration.java Tue Jul 28 18:08:06 2020 +0900 >>>>>>>> @@ -165,6 +165,9 @@ >>>>>>>> >>>>>>>> ???? private String findFontWithCharset(FontDescriptor[] fontDescriptors, String charset) { >>>>>>>> ???????? String fontName = null; >>>>>>>> +??????? if (charset.equals("DEFAULT_CHARSET")) { >>>>>>>> +??????????? charset = "ANSI_CHARSET"; >>>>>>>> +??????? } >>>>>>>> ???????? for (int i = 0; i < fontDescriptors.length; i++) { >>>>>>>> ???????????? String componentFontName = fontDescriptors[i].getNativeName(); >>>>>>>> ???????????? if (componentFontName.endsWith(charset)) { >>>>>>>> ``` >>>>>>>> >>>>>>>> The following code is pointless as you said, so I agree with you to remove it. >>>>>>>> >>>>>>>>>> if (fontName ==null) { >>>>>>>>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>>> } >>>>>>>> >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Yasumasa >>>>>>>> >>>>>>>> >>>>>>>> On 2020/07/28 15:15, Philip Race wrote: >>>>>>>>> I do see some case when default is being returned. >>>>>>>>> >>>>>>>>> subsetEncodingMap.put("alphabetic", "default"); >>>>>>>>> >>>>>>>>> which then needs an alphabetic font as part of the core script sequence. >>>>>>>>> Now looking at desc.isDefaultFont() && charset.equals("DEFAULT_CHARSET") Perhaps that could change the answer in some cases you don't intend. For these UTF 8 locales there is nothing in the fontconfig that identifies the right font. The "ja" in UTF-8.ja is not connected to "japanese" in the fontconfig file. Something like that may be the right fix but it would be a bigger change. I am not sure how much it matters either. There just needs to be a font. In the win9x days and when AWT was an "A" lib not using unicode maybe. Or maybe there's still some benefit to the right font for the language still being set as the text component font but it is not happening anyway in this case and your fix won't solve that. All roads lead to the latin/alphabetic font here. My thinking right now is to just make changes in getTextComponentFontNameso it always returns something but only after the current code fails. >>>>>>>>> So instead of your fix, just add this there : >>>>>>>>> >>>>>>>>> if (fontName ==null) { >>>>>>>>> ???? if (fontDescriptors.length >0) { >>>>>>>>> ?????? return fontDescriptors[0].getNativeName(); >>>>>>>>> ???? }else { >>>>>>>>> ???????? fontName ="Arial,ANSI_CHARSET"; >>>>>>>>> ??? } >>>>>>>>> } >>>>>>>>> >>>>>>>>> Not very satisfactory but then we can remove the comment about maybe returning NULL. -phil. >>>>>>>>> On 7/27/2020 5:34 PM, Philip Race wrote: >>>>>>>>>> This did start when we updated the fontconfiguration file but I think there was nothing wrong with the update >>>>>>>>>> and I found it could happen with the previous? version if we just remove "devanagari" from this line in the OLD version. >>>>>>>>>> >>>>>>>>>> sequence.allfonts.UTF-8.ja=alphabetic,japanese,devanagari,dingbats,symbol >>>>>>>>>> >>>>>>>>>> Removing that mimics what happened in the new version and is the first piece of the puzzle. >>>>>>>>>> >>>>>>>>>> I don't know why devanagari is even there. Possibly it is because that line was derived from this one :- >>>>>>>>>> sequence.allfonts.UTF-8.hi=alphabetic/1252,devanagari,dingbats,symbol >>>>>>>>>> since hindi was the first UTF-8 locale that was supported and someone just edited it to create the JA entry. >>>>>>>>>> >>>>>>>>>> But it indicates to me that this is quite fragile and could easily have crashed a long time ago if Devanagari were >>>>>>>>>> not there as one of the "core fonts" for UTF-8.ja >>>>>>>>>> >>>>>>>>>> Then in WFontConfiguration.initTables() a few things happen >>>>>>>>>> >>>>>>>>>> first this >>>>>>>>>> subsetCharsetMap.put("devanagari","DEFAULT_CHARSET"); >>>>>>>>>> subsetCharsetMap.put("japanese","SHIFTJIS_CHARSET"); >>>>>>>>>> >>>>>>>>>> [for devanagari JDK specifies the Mangal font.] >>>>>>>>>> >>>>>>>>>> the subsetEncodinging map has this for Japanese >>>>>>>>>> ? subsetEncodingMap.put("japanese", "windows-31j"); >>>>>>>>>> >>>>>>>>>> then this for UTF-8 for textInputCharset >>>>>>>>>> }else if ("UTF-8".equals(defaultEncoding)) { >>>>>>>>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>>> >>>>>>>>>> whereas for the old ms932/windows-31j code page we would have had this >>>>>>>>>> >>>>>>>>>> }else if ("windows-31j".equals(defaultEncoding)) { >>>>>>>>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>>> >>>>>>>>>> it then calls makeAWTFontName("MS Gothic", "japanese"); >>>>>>>>>> which looks like this : >>>>>>>>>> >>>>>>>>>> WFontConfiguration.makeAWTFontName(String platformFontName, String characterSubsetName) { >>>>>>>>>> ???? String windowsCharset = subsetCharsetMap.get(characterSubsetName); >>>>>>>>>> ???? if (windowsCharset ==null) { >>>>>>>>>> ???????? windowsCharset ="DEFAULT_CHARSET"; >>>>>>>>>> ???? } >>>>>>>>>> ???? return platformFontName +"," + windowsCharset; >>>>>>>>>> } >>>>>>>>>> >>>>>>>>>> For "japanese", the result of >>>>>>>>>> subsetCharsetMap.get(characterSubsetName); >>>>>>>>>> >>>>>>>>>> will always be"SHIFTJIS_CHARSET" >>>>>>>>>> >>>>>>>>>> So the method will return "MS Gothic,SHIFTJIS_CHARSET" >>>>>>>>>> and this will get stored in the FontDescriptor >>>>>>>>>> >>>>>>>>>> The other core entries for Japanese map to ANSI_CHARSET and SYMBOL_CHARSET. >>>>>>>>>> >>>>>>>>>> When in the old fontconfig file? is called for "devanagari", it will return "Mangal,DEFAULT_CHARSET". >>>>>>>>>> >>>>>>>>>> Without that, there is no DEFAULT_CHARSET mapped for any font in the core Japanese fonts. >>>>>>>>>> >>>>>>>>>> This all becomes important when WFontConfiguration.getTextComponentFontName() is called from native code. >>>>>>>>>> >>>>>>>>>> It has this line >>>>>>>>>> String fontName = findFontWithCharset(fontDescriptors, textInputCharset); >>>>>>>>>> >>>>>>>>>> from above we know that for UTF-8 : >>>>>>>>>> ???? textInputCharset ="DEFAULT_CHARSET"; >>>>>>>>>> >>>>>>>>>> but as just noted above there are NO fonts tagged with that >>>>>>>>>> >>>>>>>>>> So the look up fails. The code retries : - >>>>>>>>>> if (fontName ==null) { >>>>>>>>>> ???? fontName = findFontWithCharset(fontDescriptors,"DEFAULT_CHARSET"); >>>>>>>>>> } >>>>>>>>>> ? but that was pointless since DEFAULT_CHARSET is what was already tried. >>>>>>>>>> >>>>>>>>>> Now back to the windows-31j locale, there we had >>>>>>>>>> >>>>>>>>>> ???? textInputCharset ="SHIFTJIS_CHARSET"; >>>>>>>>>> >>>>>>>>>> so that finds the match "MS Gothic,SHIFTJIS_CHARSET". >>>>>>>>>> >>>>>>>>>> ? getTextComponentFontName() has the comment "May return null." which is true, but not very helpful to the native caller, which bails out, leaving the >>>>>>>>>> native font structs uninitialised and ready to cause a crash. >>>>>>>>>> >>>>>>>>>> That's the kind of analysis I was hoping for ! >>>>>>>>>> >>>>>>>>>> Now, the question is, is what you propose the right fix for this ? >>>>>>>>>> But I am not sure it can even work. >>>>>>>>>> >>>>>>>>>> 931 descriptors[i] = new FontDescriptor(awtFontName, enc, exclusionRanges, encoding.equals("default")); seems like it will never pass true in my testing. Then the whole fix falls apart. Can you show some evidence ? -phil >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 7/27/2020 3:50 PM, Yasumasa Suenaga wrote: >>>>>>>>>>> Hi Phil, >>>>>>>>>>> >>>>>>>>>>> I confirmed WFontConfiguration::findFontWithCharset cannot find if -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>> I guess one of the cause is the definitions in make/data/fontconfig/windows.fontconfig.properties, but also DEFAULT_CHARSET does not work at this point. >>>>>>>>>>> >>>>>>>>>>> If we do not pass -Dfile.encoding=UTF-8, `charset` in WFontConfiguration::findFontWithCharset is set to "windows-31j" and it can find out valid font when Windows is set to Japanese locale. >>>>>>>>>>> >>>>>>>>>>> I can share minidump for further investigation. What should I do / share? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> >>>>>>>>>>> Yasumasa >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 2020/07/28 0:02, Philip Race wrote: >>>>>>>>>>>> Hi, >>>>>>>>>>>> >>>>>>>>>>>> You're avoiding a crash but I don't yet know what *exactly* caused the crash. >>>>>>>>>>>> Some Java code not handling DEFAULT_CHARSET is obviously not the exact cause. >>>>>>>>>>>> This just starts it and something bad presumably happens later in native code. >>>>>>>>>>>> >>>>>>>>>>>> And I don't yet understand why (we think) this started happening when some >>>>>>>>>>>> additional fonts were added to the file. >>>>>>>>>>>> >>>>>>>>>>>> Knowing exactly what is wrong will help decide if this is the right fix. >>>>>>>>>>>> >>>>>>>>>>>> -phil >>>>>>>>>>>> >>>>>>>>>>>> On 7/24/20, 5:59 AM, Yasumasa Suenaga wrote: >>>>>>>>>>>>> Hi Jay, >>>>>>>>>>>>> >>>>>>>>>>>>> I share you hs_err log of this issue. >>>>>>>>>>>>> `chcp` on my console shows "932" (MS932). It is Japanese locale. >>>>>>>>>>>>> >>>>>>>>>>>>> I can share you if you want to know. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> >>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On 2020/07/24 20:59, Jayathirth D V wrote: >>>>>>>>>>>>>> Hi Yasumasa, >>>>>>>>>>>>>> >>>>>>>>>>>>>> I tried after changing the locale to Japanese but I don?t see the issue. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Also tried to reproduce the issue by enabling/disabling setting "Beta:Use Unicode UTF-8 for worldwide language support" in my locale setting. >>>>>>>>>>>>>> >>>>>>>>>>>>>> @Others : Can somebody else try to reproduce this issue? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> Jay >>>>>>>>>>>>>> >>>>>>>>>>>>>> -----Original Message----- >>>>>>>>>>>>>> From: Yasumasa Suenaga >>>>>>>>>>>>>> Sent: Thursday, July 23, 2020 5:41 PM >>>>>>>>>>>>>> To: Jayathirth D v >>>>>>>>>>>>>> Cc: 2d-dev <2d-dev at openjdk.java.net>; awt-dev at openjdk.java.net >>>>>>>>>>>>>> Subject: Re: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 >>>>>>>>>>>>>> >>>>>>>>>>>>>> Hi Jay, >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 2020/07/23 19:09, Jayathirth D v wrote: >>>>>>>>>>>>>>> Hi, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I tried reproducing the issue in my Windows 10 machine with UTF-8 encoding and test file mentioned in the bug, I don?t see any crash. >>>>>>>>>>>>>>> Am I missing something? >>>>>>>>>>>>>> >>>>>>>>>>>>>> OS locale may be affecting. >>>>>>>>>>>>>> >>>>>>>>>>>>>> My laptop has been set Japanese (CP932 / Windows-31J), so WFontConfiguration attempt to find Japanese font by default. >>>>>>>>>>>>>> However WFontConfiguration cannot find out the font of "DEFAULT_CHARSET" when -Dfile.encoding=UTF-8 is passed. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Also I think this should be in awt-dev so adding the mailing list. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> Jay >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 20-Jul-2020, at 12:59 PM, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> PING: could you review it? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On 2020/07/11 17:39, Yasumasa Suenaga wrote: >>>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>>> Please review this change: >>>>>>>>>>>>>>>>> ??? JBS: https://bugs.openjdk.java.net/browse/JDK-8249215 >>>>>>>>>>>>>>>>> ??? webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8249215/webrev.00/ >>>>>>>>>>>>>>>>> I tried to run Sample.java in JDK-8236161 with -Dfile.encoding=UTF-8, but JVM crashed due to internal error on fastdebug VM. I saw same call stack with JDK-8236161 in hs_err log. >>>>>>>>>>>>>>>>> I investigated it, then I found out current implementation cannot handle default charset. >>>>>>>>>>>>>>>>> If charset is set to UTF-8, it would be handled as "DEFAULT_CHARSET" in WFontConfiguration::initTables. However it does not affect native font name, so we cannot find valid font. >>>>>>>>>>>>>>>>> This change has passed all tests on submit repo (mach5-one-ysuenaga-JDK-8249215-20200711-0655-12566039) >>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>> Yasumasa >>>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>> > > From Sergey.Bylokhov at oracle.com Thu Jul 30 03:20:04 2020 From: Sergey.Bylokhov at oracle.com (Sergey Bylokhov) Date: Wed, 29 Jul 2020 20:20:04 -0700 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> <5F2039A4.6040807@oracle.com> <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> <5F20C7A4.2010002@oracle.com> <98367096-a1d4-9a35-5e35-3ce27b96bc5c@oss.nttdata.com> <5F20CEFE.80806@oracle.com> Message-ID: <05267f63-59f3-636c-c172-45da7f4526ef@oracle.com> On 29.07.2020 19:37, Yasumasa Suenaga wrote: > On 2020/07/30 11:03, Sergey Bylokhov wrote: >> On 28.07.2020 18:52, Yasumasa Suenaga wrote: >>> Hi Phil, Sergey, >>> >>> Sorry, I missed. null is WComponentPeer::pData, not defaultFont. >> >> Could you please clarify in what exact place access to the null pData in WComponentPeer caused a crash? > > src/java.desktop/windows/native/libawt/windows/awt_Component.cpp > > 6032???????? AwtFont *awtFont = (AwtFont *)env->GetLongField(font, AwtFont::pDataID); > 6033???????? if (awtFont == NULL) { > 6034???????????? /*arguments of AwtFont::Create are changed for multifont component */ > 6035???????????? awtFont = AwtFont::Create(env, font); > 6036???????? } > 6037???????? env->SetLongField(font, AwtFont::pDataID, (jlong)awtFont); > 6038 > 6039???????? c->SetFont(awtFont); // <-- > > awtFont in above is NULL. So the reason is that AwtFont::Create returns NULL, and if you take a look to that method there are a few cases when we could return NULL or return 0. Should not all that "returns" be removed? or all results of its usage wrapped by the "if(awtFont!=null)". Or it is fine as-is? -- Best regards, Sergey. From suenaga at oss.nttdata.com Thu Jul 30 04:32:16 2020 From: suenaga at oss.nttdata.com (Yasumasa Suenaga) Date: Thu, 30 Jul 2020 13:32:16 +0900 Subject: [OpenJDK 2D-Dev] PING: RFR: 8249215: JFrame::setVisible crashed with -Dfile.encoding=UTF-8 In-Reply-To: <05267f63-59f3-636c-c172-45da7f4526ef@oracle.com> References: <2502c57c-544a-eb60-3a11-c3c0bc2ee852@oss.nttdata.com> <7cea2b9f-75c4-7e89-1e21-73ca1816db98@oss.nttdata.com> <5A6C958B-722E-4574-8258-D404C77D5FFD@ORACLE.COM> <3153dd5e-4a01-7e9a-2508-60233604dbbf@oss.nttdata.com> <1ba1a832-45cd-8f50-2b5e-a8205d521975@oss.nttdata.com> <5F1EEC96.5020509@oracle.com> <8a5a1d0f-7396-b086-b97d-1eafb251600a@oss.nttdata.com> <5F2039A4.6040807@oracle.com> <2d4b58c3-93c1-5585-f4b4-e26efa6b859d@oss.nttdata.com> <5F20C7A4.2010002@oracle.com> <98367096-a1d4-9a35-5e35-3ce27b96bc5c@oss.nttdata.com> <5F20CEFE.80806@oracle.com> <05267f63-59f3-636c-c172-45da7f4526ef@oracle.com> Message-ID: <93345020-5463-1078-61f6-5f305cea1449@oss.nttdata.com> On 2020/07/30 12:20, Sergey Bylokhov wrote: > On 29.07.2020 19:37, Yasumasa Suenaga wrote: >> On 2020/07/30 11:03, Sergey Bylokhov wrote: >>> On 28.07.2020 18:52, Yasumasa Suenaga wrote: >>>> Hi Phil, Sergey, >>>> >>>> Sorry, I missed. null is WComponentPeer::pData, not defaultFont. >>> >>> Could you please clarify in what exact place access to the null pData in WComponentPeer caused a crash? >> >> src/java.desktop/windows/native/libawt/windows/awt_Component.cpp >> >> 6032???????? AwtFont *awtFont = (AwtFont *)env->GetLongField(font, AwtFont::pDataID); >> 6033???????? if (awtFont == NULL) { >> 6034???????????? /*arguments of AwtFont::Create are changed for multifont component */ >> 6035???????????? awtFont = AwtFont::Create(env, font); >> 6036???????? } >> 6037???????? env->SetLongField(font, AwtFont::pDataID, (jlong)awtFont); >> 6038 >> 6039???????? c->SetFont(awtFont); // <-- >> >> awtFont in above is NULL. > > So the reason is that AwtFont::Create returns NULL, and if you take a look to that method > there are a few cases when we could return NULL or return 0. Should not all that "returns" > be removed? or all results of its usage wrapped by the "if(awtFont!=null)". > Or it is fine as-is? I think it is fine as-is with my proposal (webrev.03). AwtFont::Create() would call GetComponentForName(), then it returns component font name from WFontConfiguration::getTextComponentForName. It is the method what I fixed in this change! Thanks, Yasumasa From dkk089 at gmail.com Thu Jul 30 20:49:03 2020 From: dkk089 at gmail.com (Daniel Kamil Kozar) Date: Thu, 30 Jul 2020 22:49:03 +0200 Subject: [PATCH] Use new clipboard APIs in Windows Message-ID: Hello. This is the patch which replaces usages of the old Windows APIs for monitoring clipboard content with new ones introduced in Windows Vista. The deficiencies of the old APIs are well known and might result in some subscribed applications not receiving notifications from the operating system, as they rely on all the applications in the current clipboard chain processing clipboard messages properly. Porting the code to use the new APIs not only makes OpenJDK immune to these issues, but also results in slightly less code needed to support clipboard-related functionality. As this is a change that's very platform-specific, I don't think providing a unit test is practical, as it would also require providing a native application that runs alongside the test and deliberately breaks the keyboard chain, resulting in OpenJDK not being able to receive clipboard format change notifications. This is a bug/limitation of the old Windows API, not OpenJDK itself. Anyhow, the already existing ClipboardInterVMTest passes, which shows that already existing functionality is not impacted by this change. Kind regards, Daniel -------------- next part -------------- A non-text attachment was scrubbed... Name: windows-clipboard-new-format-api.diff Type: application/octet-stream Size: 5935 bytes Desc: not available URL: From alexander.zuev at oracle.com Fri Jul 31 18:08:04 2020 From: alexander.zuev at oracle.com (Alexander Zuev) Date: Fri, 31 Jul 2020 11:08:04 -0700 Subject: RFR: 8212226 SurfaceManager throws "Invalid Image variant" for MultiResolutionImage (Windows) In-Reply-To: <48870a16-57ed-4856-6bcb-83ca61e77fe1@oracle.com> References: <6f2a9c6b-5b3a-d83b-f368-ebd4bd9bfeb1@oracle.com> <633b39d0-7198-f0bd-3ff6-59dcdcfcb068@oracle.com> <88a25554-2712-0d1a-f008-f78b63fee67e@oracle.com> <48870a16-57ed-4856-6bcb-83ca61e77fe1@oracle.com> Message-ID: <698439a5-b75c-802f-2884-c095e0ff0d74@oracle.com> I slightly fixed the test and added it to the fix. New webrev is here: http://cr.openjdk.java.net/~kizune/8212226/webrev.03/ On 7/29/2020 1:11 AM, Sergey Bylokhov wrote: > On 27.07.2020 23:43, Alexander Zuev wrote: >> ?? As for the test i have a manual test that i use to reproduce the >> situation but i am not sure i can make >> the automated test case - the configuration required is quite unique. >> I tried to play with the setting >> that manages the magnification factor but changing it does not >> trigger the bug. > > I guess something like this should work: > > import java.awt.Color; > import java.awt.Graphics; > import java.awt.Graphics2D; > import java.awt.Image; > import java.awt.image.BaseMultiResolutionImage; > import java.awt.image.BufferedImage; > import java.awt.image.ImageObserver; > import java.awt.image.ImageProducer; > > import static java.awt.image.BufferedImage.TYPE_INT_RGB; > > public final class SkipRequestedImageVariant { > > ??? public static void main(String[] args) { > ??????? var mri = new BaseMultiResolutionImage(1, > generateFakeImage(), > ?????????????????????????????????????????????? generateImage(200, > Color.GREEN), > generateFakeImage()); > > ??????? BufferedImage target = new BufferedImage(500, 500, TYPE_INT_RGB); > ??????? Graphics2D g2d = target.createGraphics(); > ??????? g2d.drawImage(mri, 0, 0, 500, 500, null); > ??????? g2d.dispose(); > ??????? if (Color.GREEN.getRGB() != target.getRGB(1, 1)) { > ??????????? throw new RuntimeException("Wrong resolution variant was > used"); > ??????? } > ??? } > > ??? private static BufferedImage generateImage(int size, Color c) { > ??????? BufferedImage img = new BufferedImage(size, size, TYPE_INT_RGB); > ??????? Graphics g = img.createGraphics(); > ??????? g.setColor(c); > ??????? g.fillRect(0, 0, size, size); > ??????? g.dispose(); > ??????? return img; > ??? } > > ??? private static Image generateFakeImage() { > ??????? return new Image(){ > ??????????? @Override > ??????????? public int getWidth(ImageObserver observer) { > ??????????????? return -1; > ??????????? } > > ??????????? @Override > ??????????? public int getHeight(ImageObserver observer) { > ??????????????? return -1; > ??????????? } > > ??????????? @Override > ??????????? public ImageProducer getSource() { > ??????????????? return null; > ??????????? } > > ??????????? @Override > ??????????? public Graphics getGraphics() { > ??????????????? return null; > ??????????? } > > ??????????? @Override > ??????????? public Object getProperty(String name, ImageObserver > observer) { > ??????????????? return null; > ??????????? } > ??????? }; > ??? } > } From suman.rajkumaar.kodandarama at oracle.com Tue Jul 7 14:35:32 2020 From: suman.rajkumaar.kodandarama at oracle.com (Suman Rajkumaar Kodandarama) Date: Tue, 07 Jul 2020 14:35:32 -0000 Subject: RFR [16] 8246248: TransferHandler.exportToClipboard prints stacktrace even if succeeded In-Reply-To: References: Message-ID: Hello All, Could you review a fix for the JDK 16, please? Bug: https://bugs.openjdk.java.net/browse/JDK-8246248 webrev: http://cr.openjdk.java.net/~dmarkov/suman/8246248/webrev.00/ Problem description:When copying an image with alpha component to the clipboard, IOException occurs and its stack trace is printed to the console. The IOException is thrown because JPEG flavor does not support alpha, which it has been dropped in JDK-8204187. Fix: Instead of printing the exception on the standard console, the fix replaces printing the stack trace of any exception that may occur while placing data to the clipboard with logging. Best Regards, K Suman Rajkumaar -------------- next part -------------- An HTML attachment was scrubbed... URL: