Hi, Jay.
It looks like some synchronization is required when you access
"dropCount" from two threads(the drop callback and the new added Thread).
On 21/02/2018 00:55, Jayathirth D V wrote:
Hi Sergey,
Thanks for your inputs.
I changed robot.mouseMouse() parameters and observed that if we don’t receive
any updates in ImageDropTarget listener we will not dispose ImageDropTarget
frame.
I tried using ProcessCommunicator.destroyProcess() in finally block of
ImageDragSource but it also didn’t dispose the ImageDropTarget frame.
So as suggested I have added 2 min wait in ImageDropTarget.main() and if we
don’t receive anything in ImageDropTarget listener we will dispose() the frame.
Usually in my machine it takes around 25seconds for DnD of all image formats so
2 minutes wait should be more than enough in all machines and different HiDPI
scenarios.
Please find updated webrev for review:
http://cr.openjdk.java.net/~jdv/8197926/webrev.03/
Thanks,
Jay
-----Original Message-----
From: Sergey Bylokhov
Sent: Saturday, February 17, 2018 1:36 AM
To: Jayathirth D V
Cc: awt-dev@openjdk.java.net
Subject: Re: <AWT Dev> [AWT Dev] [11] RFR JDK-8197926:
java/awt/dnd/ImageTransferTest/ImageTransferTest.java doesnt close the windows in
HiDPI setting
Hi, Jay.
There is one additional small issue, I have found it by run the test on
win10 where the robot does not work properly(separate bug). The subprocess
still leaves the frame if the robot did not complete dnd properly. I think you
can reproduce it by comment out all robot.mouseMove operations. The problem is
that ImageDropTarget.main() did not dispose() the frame at the end of the
method(it dispose it only in case of some errors). I think that the
ImageDropTarget.main() should wait some amount of time and then throw an
exception/dispose the frame/ or something like this. Or maybe the main process
should kill/destroy the subprocess.
On 15/02/2018 23:33, Jayathirth D V wrote:
Strangely I tried the same -vmoptions:"-Dsun.java2d.uiScale=3" thing today and using
System.getProperty("sun.java2d.uiScale") I am able to get the value inside test case. So
I have modified the test case to pass scale value to ProcessCommunicator.executeChildProcess() and
also I made some indentation changes in test case.
Please find updated webrev for review:
http://cr.openjdk.java.net/~jdv/8197926/webrev.02/
Thanks,
Jay
-----Original Message-----
From: Sergey Bylokhov
Sent: Friday, February 16, 2018 3:28 AM
To: Jayathirth D V
Cc: awt-dev@openjdk.java.net
Subject: Re: <AWT Dev> [AWT Dev] [11] RFR JDK-8197926:
java/awt/dnd/ImageTransferTest/ImageTransferTest.java doesnt close the
windows in HiDPI setting
Hi, Jay.
I tried different failure scenarios inside test like making comparing
images fail but all the times frames are getting disposed.
Could you please elaborate in which scenario exactly you are seeing
frame not getting disposed?
I run the version of the test before your fix, and it leaves one of the frame
of the screen.
But I have still added explicit frame.dispose() at places to make
sure that we dispose the created frames.
Please find updated webrev for review:
http://cr.openjdk.java.net/~jdv/8197926/webrev.01/
Also in continuation to what we discussed offline, I used
-vmoptions:"-Dsun.java2d.uiScale=2" to pass to jtreg from command
prompt. But in this case also
System.getProperty("sun.java2d.uiScale")
returned null in test case. So I was not able to pass uiScale
mentioned in command prompt to ProcessCommunicator in test case.
I tested it using this command line:
../jtreg/bin/jtreg -vmoptions:"-Dsun.java2d.uiScale=10"
-verbose:summary -a -nr -jdk:./build/windows-x64/images/jdk/
open/test/jdk/java/awt/dnd/ImageTransferTest/ImageTransferTest.java
Plus this change in the test:
public static void main(String[] arg) throws Exception {
+ String prop = System.getProperty("sun.java2d.uiScale");
+ System.err.println(prop);
It prints 10 in the log.
--
Best regards, Sergey.
--
Best regards, Sergey.