Re: PathTransition jitter
Thank you very much, Itai, for this straight tip, because testing some JavaFX applcations with (X)Ubuntu 17.04 (Mesa 17.0.1 and Xorg>1.18.4) didn't show any bad behavior like the aforementioned resource leak. So the only question remaining is why nobody mentioned this as a possible solution to JDK-8161914 on it's JBS page? Anyway, I don't intend lead this off-topic, so I can only confirm the jittering issue. Cheers, Hermann Am 07.05.2017 um 13:16 schrieb Itai: Hermann - I believe this bug is due to a combination of Mesa and X.org - it seems to be resolved by using Mesa>=13.0 *and* X.org>=1.18.4 . Since this is a Linux-only bug, I don't think it's the same as the TransitionPath jitter, as it reportedly happens on Windows as well. On Sun, May 7, 2017 at 12:57 PM, Hermann Maierwrote: I can reproduce the problem as well on my system with (X)Ubuntu 16.04 64-Bit and Mesa 12.0.6, with JDK 8u131. Also, the CPU usage of the Java process and the Xorg process is increasing constantly until the application gets completely laggy and unusable (like every application that is using some JavaFX animation under Linux with the hardware renderer). This bug is already known [1], the resource leak is happening on my system too and it's very annoying (e.g. I made a game with JavaFX and realized this too late…). Thus I would suggest that raising the priority of that bug would be appropriate? However, when I use the Software Renderer there's nothing like described above, so it's really likely related to Mesa/Xorg. Cheers [1] https://bugs.openjdk.java.net/browse/JDK-8161914 Am 07.05.2017 um 06:03 schrieb Jose Martinez: Looks like I am unable to update the Jira ticket so I guess I'll update the bug in here. Kevin mentioned that there is some relief if "-Djavafx.animation.fullspeed=true" VM option is used. I notice that it does improve but not remove the problem. Also, the jitter is not limited to PathTransition. In the example below the problem is reproduced by using Timeline and no PathTransition. Since like this is not just an issue with PathTransition, would it be possible to bump up the priority on this? The Jira mentions the fix is scheduled for Java 10. Does this affect all animation in JavaFX? Is there anyway to move objects on the screen without jitter? private void pathJitterBug(Stage primaryStage) { //Circle circle = new Circle(30, Color.RED); //Path path = new Path(); //path.getElements().add(new MoveTo(100, 100)); //path.getElements().add(new LineTo(500, 100)); //path.getElements().add(new LineTo(500, 500)); //path.getElements().add(new LineTo(100, 500)); //path.getElements().add(new LineTo(100, 100)); // //PathTransition pathTransition = new PathTransition(Duration.seconds(10), path, circle); //pathTransition.setCycleCount(Animation.INDEFINITE); // pathTransition.setOrientation(PathTransition.OrientationType .ORTHOGONAL_TO_TANGENT); //pathTransition.playFromStart(); // Circle circle2 = new Circle(20, Color.BLUE); Timeline tl = new Timeline( new KeyFrame(Duration.ZERO, new KeyValue(circle2.centerXProperty(), 125), new KeyValue(circle2.centerYProperty(), 125)), new KeyFrame(Duration.seconds(5), new KeyValue(circle2.centerXProperty(), 425), new KeyValue(circle2.centerYProperty(), 425)) ); tl.setCycleCount(Timeline.INDEFINITE); tl.setAutoReverse(true); tl.playFromStart(); // Circle circle3 = new Circle(20, Color.GREEN); Timeline tl2 = new Timeline( new KeyFrame(Duration.ZERO, new KeyValue(circle3.centerXProperty(), 425), new KeyValue(circle3.centerYProperty(), 125)), new KeyFrame(Duration.seconds(5), new KeyValue(circle3.centerXProperty(), 125), new KeyValue(circle3.centerYProperty(), 425)) ); tl2.setCycleCount(Timeline.INDEFINITE); tl2.setAutoReverse(true); tl2.playFromStart(); // Group root = new Group(); //root.getChildren().addAll(circle, circle2, circle3); root.getChildren().addAll(circle2, circle3); Scene scene = new Scene(root, 600, 600); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); } From: Kevin Rushforth To: Jose Martinez Cc: "openjfx-dev@openjdk.java.net" ; Lord Chaos Sent: Friday, April 14, 2017 9:29 AM Subject: Re: PathTransition jitter And here is the direct link in JBS: https://bugs.openjdk.java.net/browse/JDK-8178805 -- Kevin Jose Martinez wrote: Thank you Kevin. For those interested here is the bug report: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8178805 From: Kevin Rushforth To: Jose
Re: PathTransition jitter
In previous post I mentioned Kevin, I meant Jim. In the last update from Jim for this bug, he mentioned that it could be related to synchronization and frame rate vs rendering. https://bugs.openjdk.java.net/browse/JDK-8178805 I tried to run tests to prove this out, but was not able to notice any anomalies with either the frame rate nor the MasterTimer. The method used to test the MasterTimer by passing it an AnimationTimer that stores the delta time. A hiccup in the MasterTimer should be noticed from the AnimationTimer by storing the delta times and plotting them. While gathering those times, might as well collect the instant FPS and plot those as well. Would the synchronization issue be notied through either of these methods or am I off the mark here? The program in the link below does what I mentioned. When you run it either wait for the program to plot the points or click on the black background to force the points to draw on the screen (red is delta time from the MasterTimer and light green is the FPS). I like to wait till the jitter happens then click the background right away. After running many tests I do not see any hiccups in the plots that match the noticed occurrences of jitter. Does this mean that it could be a render issue? https://pastebin.com/XjiqE9yu From: Jose MartinezTo: Kevin Rushforth Cc: "openjfx-dev@openjdk.java.net" ; Lord Chaos Sent: Sunday, May 7, 2017 12:03 AM Subject: Re: PathTransition jitter Looks like I am unable to update the Jira ticket so I guess I'll update the bug in here. Kevin mentioned that there is some relief if "-Djavafx.animation.fullspeed=true" VM option is used. I notice that it does improve but not remove the problem. Also, the jitter is not limited to PathTransition. In the example below the problem is reproduced by using Timeline and no PathTransition. Since like this is not just an issue with PathTransition, would it be possible to bump up the priority on this? The Jira mentions the fix is scheduled for Java 10. Does this affect all animation in JavaFX? Is there anyway to move objects on the screen without jitter? private void pathJitterBug(Stage primaryStage) { // Circle circle = new Circle(30, Color.RED); // Path path = new Path(); // path.getElements().add(new MoveTo(100, 100)); // path.getElements().add(new LineTo(500, 100)); // path.getElements().add(new LineTo(500, 500)); // path.getElements().add(new LineTo(100, 500)); // path.getElements().add(new LineTo(100, 100)); // // PathTransition pathTransition = new PathTransition(Duration.seconds(10), path, circle); // pathTransition.setCycleCount(Animation.INDEFINITE); // pathTransition.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT); // pathTransition.playFromStart(); // Circle circle2 = new Circle(20, Color.BLUE); Timeline tl = new Timeline( new KeyFrame(Duration.ZERO, new KeyValue(circle2.centerXProperty(), 125), new KeyValue(circle2.centerYProperty(), 125)), new KeyFrame(Duration.seconds(5), new KeyValue(circle2.centerXProperty(), 425), new KeyValue(circle2.centerYProperty(), 425)) ); tl.setCycleCount(Timeline.INDEFINITE); tl.setAutoReverse(true); tl.playFromStart(); // Circle circle3 = new Circle(20, Color.GREEN); Timeline tl2 = new Timeline( new KeyFrame(Duration.ZERO, new KeyValue(circle3.centerXProperty(), 425), new KeyValue(circle3.centerYProperty(), 125)), new KeyFrame(Duration.seconds(5), new KeyValue(circle3.centerXProperty(), 125), new KeyValue(circle3.centerYProperty(), 425)) ); tl2.setCycleCount(Timeline.INDEFINITE); tl2.setAutoReverse(true); tl2.playFromStart(); // Group root = new Group(); // root.getChildren().addAll(circle, circle2, circle3); root.getChildren().addAll(circle2, circle3); Scene scene = new Scene(root, 600, 600); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); } From: Kevin Rushforth To: Jose Martinez Cc: "openjfx-dev@openjdk.java.net" ; Lord Chaos Sent: Friday, April 14, 2017 9:29 AM Subject: Re: PathTransition jitter And here is the direct link in JBS: https://bugs.openjdk.java.net/browse/JDK-8178805 -- Kevin Jose Martinez wrote: > Thank you Kevin. > For those interested here is the bug report: > http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8178805 > > > > > From: Kevin Rushforth > To: Jose Martinez > Cc:
Re: PathTransition jitter
Hermann - I believe this bug is due to a combination of Mesa and X.org - it seems to be resolved by using Mesa>=13.0 *and* X.org>=1.18.4 . Since this is a Linux-only bug, I don't think it's the same as the TransitionPath jitter, as it reportedly happens on Windows as well. On Sun, May 7, 2017 at 12:57 PM, Hermann Maierwrote: > I can reproduce the problem as well on my system with (X)Ubuntu 16.04 > 64-Bit and Mesa 12.0.6, with JDK 8u131. > Also, the CPU usage of the Java process and the Xorg process is increasing > constantly until the application gets completely laggy and unusable (like > every application that is using some JavaFX animation under Linux with the > hardware renderer). This bug is already known [1], the resource leak is > happening on my system too and it's very annoying (e.g. I made a game with > JavaFX and realized this too late…). Thus I would suggest that raising the > priority of that bug would be appropriate? > However, when I use the Software Renderer there's nothing like described > above, so it's really likely related to Mesa/Xorg. > > > Cheers > > [1] https://bugs.openjdk.java.net/browse/JDK-8161914 > > Am 07.05.2017 um 06:03 schrieb Jose Martinez: > > Looks like I am unable to update the Jira ticket so I guess I'll update > the bug in here. > > Kevin mentioned that there is some relief if > "-Djavafx.animation.fullspeed=true" VM option is used. I notice that it > does improve but not remove the problem. Also, the jitter is not limited > to PathTransition. In the example below the problem is reproduced by using > Timeline and no PathTransition. > > Since like this is not just an issue with PathTransition, would it be > possible to bump up the priority on this? The Jira mentions the fix is > scheduled for Java 10. Does this affect all animation in JavaFX? Is there > anyway to move objects on the screen without jitter? > > > > private void pathJitterBug(Stage primaryStage) { > > //Circle circle = new Circle(30, Color.RED); > > //Path path = new Path(); > > //path.getElements().add(new MoveTo(100, 100)); > > //path.getElements().add(new LineTo(500, 100)); > > //path.getElements().add(new LineTo(500, 500)); > > //path.getElements().add(new LineTo(100, 500)); > > //path.getElements().add(new LineTo(100, 100)); > > // > > //PathTransition pathTransition = new > PathTransition(Duration.seconds(10), path, circle); > > //pathTransition.setCycleCount(Animation.INDEFINITE); > > // pathTransition.setOrientation(PathTransition.OrientationType > .ORTHOGONAL_TO_TANGENT); > > //pathTransition.playFromStart(); > > // > > Circle circle2 = new Circle(20, Color.BLUE); > > Timeline tl = new Timeline( > > new KeyFrame(Duration.ZERO, new > KeyValue(circle2.centerXProperty(), 125), new > KeyValue(circle2.centerYProperty(), 125)), > > new KeyFrame(Duration.seconds(5), new > KeyValue(circle2.centerXProperty(), 425), new > KeyValue(circle2.centerYProperty(), 425)) > > ); > > tl.setCycleCount(Timeline.INDEFINITE); > > tl.setAutoReverse(true); > > tl.playFromStart(); > > // > > Circle circle3 = new Circle(20, Color.GREEN); > > Timeline tl2 = new Timeline( > > new KeyFrame(Duration.ZERO, new > KeyValue(circle3.centerXProperty(), 425), new > KeyValue(circle3.centerYProperty(), 125)), > > new KeyFrame(Duration.seconds(5), new > KeyValue(circle3.centerXProperty(), 125), new > KeyValue(circle3.centerYProperty(), 425)) > > ); > > tl2.setCycleCount(Timeline.INDEFINITE); > > tl2.setAutoReverse(true); > > tl2.playFromStart(); > > // > > Group root = new Group(); > > //root.getChildren().addAll(circle, circle2, circle3); > > root.getChildren().addAll(circle2, circle3); > > Scene scene = new Scene(root, 600, 600); > > primaryStage.setTitle("Hello World!"); > > primaryStage.setScene(scene); > > primaryStage.show(); > > } > > > > > > From: Kevin Rushforth > > To: Jose Martinez > > Cc: "openjfx-dev@openjdk.java.net" ; Lord > Chaos > > Sent: Friday, April 14, 2017 9:29 AM > > > Subject: Re: PathTransition jitter > > > > And here is the direct link in JBS: > > > > https://bugs.openjdk.java.net/browse/JDK-8178805 > > > > -- Kevin > > > > > > Jose Martinez wrote: > >> Thank you Kevin. > >> For those interested here is the bug report: > http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8178805 > >> > >> > >> > >> > >> From: Kevin Rushforth > >> To: Jose Martinez > >> Cc: "openjfx-dev@openjdk.java.net" > >> Sent: Thursday, April 13, 2017 7:49 AM > >> Subject:
Re: PathTransition jitter
I can reproduce the problem as well on my system with (X)Ubuntu 16.04 64-Bit and Mesa 12.0.6, with JDK 8u131. Also, the CPU usage of the Java process and the Xorg process is increasing constantly until the application gets completely laggy and unusable (like every application that is using some JavaFX animation under Linux with the hardware renderer). This bug is already known [1], the resource leak is happening on my system too and it's very annoying (e.g. I made a game with JavaFX and realized this too late…). Thus I would suggest that raising the priority of that bug would be appropriate? However, when I use the Software Renderer there's nothing like described above, so it's really likely related to Mesa/Xorg. Cheers [1] https://bugs.openjdk.java.net/browse/JDK-8161914 Am 07.05.2017 um 06:03 schrieb Jose Martinez: > Looks like I am unable to update the Jira ticket so I guess I'll update the bug in here. > Kevin mentioned that there is some relief if "-Djavafx.animation.fullspeed=true" VM option is used. I notice that it does improve but not remove the problem. Also, the jitter is not limited to PathTransition. In the example below the problem is reproduced by using Timeline and no PathTransition. > Since like this is not just an issue with PathTransition, would it be possible to bump up the priority on this? The Jira mentions the fix is scheduled for Java 10. Does this affect all animation in JavaFX? Is there anyway to move objects on the screen without jitter? > > private void pathJitterBug(Stage primaryStage) { > //Circle circle = new Circle(30, Color.RED); > //Path path = new Path(); > //path.getElements().add(new MoveTo(100, 100)); > //path.getElements().add(new LineTo(500, 100)); > //path.getElements().add(new LineTo(500, 500)); > //path.getElements().add(new LineTo(100, 500)); > //path.getElements().add(new LineTo(100, 100)); > // > //PathTransition pathTransition = new PathTransition(Duration.seconds(10), path, circle); > //pathTransition.setCycleCount(Animation.INDEFINITE); > // pathTransition.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT); > //pathTransition.playFromStart(); > // > Circle circle2 = new Circle(20, Color.BLUE); > Timeline tl = new Timeline( > new KeyFrame(Duration.ZERO, new KeyValue(circle2.centerXProperty(), 125), new KeyValue(circle2.centerYProperty(), 125)), > new KeyFrame(Duration.seconds(5), new KeyValue(circle2.centerXProperty(), 425), new KeyValue(circle2.centerYProperty(), 425)) > ); > tl.setCycleCount(Timeline.INDEFINITE); > tl.setAutoReverse(true); > tl.playFromStart(); > // > Circle circle3 = new Circle(20, Color.GREEN); > Timeline tl2 = new Timeline( > new KeyFrame(Duration.ZERO, new KeyValue(circle3.centerXProperty(), 425), new KeyValue(circle3.centerYProperty(), 125)), > new KeyFrame(Duration.seconds(5), new KeyValue(circle3.centerXProperty(), 125), new KeyValue(circle3.centerYProperty(), 425)) > ); > tl2.setCycleCount(Timeline.INDEFINITE); > tl2.setAutoReverse(true); > tl2.playFromStart(); > // > Group root = new Group(); > //root.getChildren().addAll(circle, circle2, circle3); > root.getChildren().addAll(circle2, circle3); > Scene scene = new Scene(root, 600, 600); > primaryStage.setTitle("Hello World!"); > primaryStage.setScene(scene); > primaryStage.show(); > } > > > From: Kevin Rushforth> To: Jose Martinez > Cc: "openjfx-dev@openjdk.java.net" ; Lord Chaos > Sent: Friday, April 14, 2017 9:29 AM > Subject: Re: PathTransition jitter > > And here is the direct link in JBS: > > https://bugs.openjdk.java.net/browse/JDK-8178805 > > -- Kevin > > > Jose Martinez wrote: >> Thank you Kevin. >> For those interested here is the bug report: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8178805 >> >> >> >> >> From: Kevin Rushforth >> To: Jose Martinez >> Cc: "openjfx-dev@openjdk.java.net" >> Sent: Thursday, April 13, 2017 7:49 AM >> Subject: Re: PathTransition jitter >> >> One more thing: all bugs were transfered from the old JavaFX JIRA intoJBS in June 2015. You can find the ones you filed using this query: >> >> https://bugs.openjdk.java.net/issues/?jql=reporter%3Djmartinezjfx >> >> -- Kevin >> >> >> Jose Martinez wrote: >> In case it helps, below is the original workaround that was provided. This workaround no longer has any affect. >> public class FixedPane extends Group {@Override >> public BaseBounds impl_computeGeomBounds(BaseBounds
Re: [9] Review request: 8177566: FX user module gets IllegalAccessException from sun.reflect.misc.Trampoline
Hi Kevin, On 05/02/2017 02:21 AM, Kevin Rushforth wrote: This review is being cross-posted to both openjfx-dev and jigsaw-dev. Please review the proposed fix for: https://bugs.openjdk.java.net/browse/JDK-8177566 http://cr.openjdk.java.net/~kcr/8177566/webrev.00/complete-webrev/ Details of the fix as well as notes to reviewers are in the bug report [1] (e.g., I've also generated separate webrevs for the fix itself, the doc changes, and the test changes). -- Kevin [1] https://bugs.openjdk.java.net/browse/JDK-8177566?focusedCommentId=14074243=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14074243 I think it is very unusual to handle unqualified exports as something special, different from qualified exports. I know what the reasoning is: if a package is exported unconditionally (to everyone) then it is part of public API and so the trampoline may access members of that package on behalf of anyone. But such reasoning is just a consequence of the lack of a finer-grained (per-module) access support in JavaFX. I know it is too much to ask for JDK 9, but could JavaFX in say JDK 10, given current API, somehow determine on whose behalf it is making the trampoline access? If it could, then the trampoline could allow qualified exports to be effective too. Regards, Peter