RFR: 8313697: [XWayland][Screencast] consequent getPixelColor calls are slow

Phil Race prr at openjdk.org
Fri Aug 11 22:20:01 UTC 2023


On Fri, 11 Aug 2023 17:19:40 GMT, Alexander Zvegintsev <azvegint at openjdk.org> 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/classes/sun/awt/screencast/ScreencastHelper.java line 31:

> 29: import sun.security.action.GetPropertyAction;
> 30: 
> 31: import javax.swing.Timer;

Is there a reason you can't use java.util.Timer ? 
Ideally [*] AWT classes should not depend on Swing classes since already Swing classes depend on AWT classes .. 

[*] yes, I know we already have such dependencies but only for very good reasons.

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

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


More information about the client-libs-dev mailing list