On Mon, 14 Aug 2023 22:46:16 GMT, Alexander Zvegintsev <azveg...@openjdk.org> 
wrote:

>> 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.

Java part looks good to me. Why 2s and not more or less ? 
The delay could be set through a system property ?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/15250#discussion_r1294410046

Reply via email to