On Mon, 14 Aug 2023 20:25:08 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:
>> Alexander Zvegintsev has updated the pull request incrementally with one >> additional commit since the last revision: >> >> fix app exit issue > > src/java.desktop/unix/classes/sun/awt/screencast/ScreencastHelper.java line > 127: > >> 125: @Override >> 126: public void run() { >> 127: closeSession(); > > What happen if the "closeSession" is executed why the new Robot#getRGBPixels > is called? In the robot code we call timerCloseSessionRestart to > restart/cancel timer, but I think it could be possible that closeSession() is > already executed and may close session right before it will be used by the > robot but after we "open" it. > > Or this case is not possible? Both `ScreencastHelper#getRGBPixels`(`Robot#getRGBPixels` calls it internally) and `ScreencastHelper#closeSession` are synchronized. So `ScreencastHelper#closeSession` will wait until the execution of `ScreencastHelper#getRGBPixels` is finished and vice versa. Many hours of testing with random delays close to DELAY_BEFORE_SESSION_CLOSE worked fine. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/15250#discussion_r1294037138