On Fri, 11 Aug 2023 17:19:40 GMT, Alexander Zvegintsev <[email protected]>
wrote:
> Right now, each call to getPixelColor/createScreenCapture opens and closes a
> ScreenCast session.
> When there are many such calls in a row, it becomes a rather time-consuming
> operation.
>
> For example,
>
>
> for (int i = 0; i < 50; i++) {
> for (int j = 0; j < 50; j++) {
> robot.getPixelColor(i, j);
> }
> }
>
> `50x50 took 375219ms`
>
> This fix offers optimization by keeping the session open and closing it only
> 2 seconds after the last activity.
>
> `50x50 took 28113ms` which is ~ 13 times faster.
>
> Testing looks good.
src/java.desktop/unix/native/libawt_xawt/awt/screencast_pipewire.c line 96:
> 94: if (screenProps->data->stream) {
> 95: fp_pw_stream_disconnect(screenProps->data->stream);
> 96: fp_pw_thread_loop_lock(pw.loop);
Moving `pw_stream_disconnect` call out of this lock fixes
[JDK-8310334](https://bugs.openjdk.org/browse/JDK-8310334)
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/15250#discussion_r1291611941