PathTransition jitter

Hermann Maier Ignatiamus at gmail.com
Sun May 7 09:57:51 UTC 2017


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 
<kevin.rushforth at oracle.com>
 >  To: Jose Martinez <jmartine_1026 at yahoo.com>
 > Cc: "openjfx-dev at openjdk.java.net" 
<openjfx-dev at openjdk.java.net>; Lord Chaos 
<joearose1 at gmail.com>
 >  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 
<kevin.rushforth at oracle.com>
 >>   To: Jose Martinez <jmartine_1026 at yahoo.com>
 >> Cc: "openjfx-dev at openjdk.java.net" 
<openjfx-dev at 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 bounds, 
BaseTransform tx) {
 >>           if (!tx.isTranslateOrIdentity()) {
 >>               super.impl_computeGeomBounds(bounds, 
BaseTransform.IDENTITY_TRANSFORM);
 >>           }
 >>           return super.impl_computeGeomBounds(bounds, tx);
 >>     }
 >> }
 >> Forgot to include:  using a Windows 10 and Geforce gtx GPU.
 >>
 >>       From: Tom Eugelink <tbee at tbee.org>
 >>   To: openjfx-dev at openjdk.java.net
 >>   Sent: Thursday, April 13, 2017 3:15 AM
 >>   Subject: Re: PathTransition jitter
 >>
 >> I'm seeing some very small irregularities; short hesitations and then 
small jumps ahead. Nothing major, but it is not totally smooth. (2.6GHz Intel 
i5, AMD FirePro M5950 GPU, Windows 10 x64)
 >>
 >> Slowing the animation to 8 instead of 4 seconds, make these hiccups 
better visible. They're most definitely there.
 >>
 >>
 >> On 13-4-2017 08:46, Michael Paus wrote:
 >>
 >>   It runs perfectly smooth on my old MacBook Pro from 2012 with JDK 8u152 ea.
 >>
 >> Am 13.04.17 um 04:25 schrieb Jose Martinez:
 >>
 >>   Many moons ago I complained about jittery PathTransition animation.  A 
bug was openned and I was provided a workaround. This was with Java 7.  I 
revisted the old project that lead to that initial complain, this time with 
Java 8.  The problem seems to be back.  I could not find the old bugreport, 
since I think the JavaFX team is not using the same bug trackingsite.
 >> Below is the test code to reproduce.  I tried it using JDK 8_64 u5, u11, 
u25, u112, u121 and the problem occurs with all of them.  The 
ImageViewstutters through the PathTransition.  I have a new laptop with 6th 
gen I7 and plenty of ram.  I do not think it is the hardware.  This used to 
besmooth like butter.  Anyone else experiencing this or can make any suggestions?
 >>
 >>       @Override
 >>       public void start(Stage primaryStage) {        String rocketImgStr=
 >> 
"iVBORw0KGgoAAAANSUhEUgAAADIAAAAdCAYAAADoxT9SAAAACXBIWXMAAAsYAAALGAGJqbUQAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/ph
 >> 
CJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz
 >> 
0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N
 >> 
2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAACHRJREFUeNrMmH9s1OUdx1/fH/e9u2/vrgdtaaXt9ZDRXoeGEsAxN0EWGWwoohFnTGrqZkxMxEW00TkzFrcpuKgJJFIyzeIgGzAX4485nSmdKM2mrGUtIBMKpfWoHOXo9bi77933x7M/er3Qlh9lk+mTPMl9c8/3+X7ez/v9fJ7P85YYaQGgRoVZHoj4ITIVaqZAuR+KPeBWgAw4Q5D4DI73QbuAt4F2viKtGegAEl8DcQ+IjSB2gTgKIgVCnNNtEDEQfwXxAGQD8Aeg5ssGIQGzgXLApUJAga
 >> 
kyVHhGGKmuhJo6CC0A9zfzg+VzJtgD3AMdR2EF8PmXCeRS/weBmcCCErj5u3DTQ6DNA1z5QbuBpfBMDp4AyoDpwLT87yDgBRTAGVEoZ4AYcCLfh640kPO1xdfClm1QFwb+DewFfuF2x/Sqqu5QKHT1jBkzplVVVekVFRVScXExPp8PRVGwLItUKsXQ0BADAwPi+PHjZ48cOTJw9OjRgydPntwLfAB0Asn/BxCA394iy02ltbV45s3j6oULmXfNNdSEQgSDQYLBILIsT2qiXC5HNBqlq6uL999/39q1a9cn3V1d7zhC/BH4+ErI8Brgyfr6+r0PrlmT3f7GG+Jgb68YSqWEkc2KVColEomEiMfj4vTp0yKZTArTNMXltqGhIfHmW2+J+XPmZHzwGrDsi2DEAywOBoP3Lly48PuGYfg3btxIfX09lmWRy+WwLAshxIQXhRDIsoymabjdblRVRZImL4DmpiYWvfIKHXPmOC8ODr4Ri0bXA/+40PhL8X/37bff/vbWrVt/8PTTT/vD4TC6rpNOp0mlUpimeV4QAJIkIYTAMAyGh4dJJpPYtj1pIDnbJgKsi8flv91336rGxsZWCX6ZTx6XDaR0+fLlcm1tLYlEAsMwsG37gsFfCJCmadi2zb59+2hra+PAgQNYlnXx92QZA6C/n/pNm/jdDTcU7dix46dXh8NvAXPHj1cvEYcVi8WIRqOcOXMGy7IuSx4AHo+HQ4cOsX37djKZDJqqkDMtinw+Ghsbqa2txbZtXC4XiqIU5h+zWPE4PPAAq9evZ35b27cebm5+5/VXX30I2DFZRrBtG8dx/qvsoGkan376KZs2bULXvUiqi88NC9mlobs1nnvuOQ4fPkwulyORSJBIJEilUhiWhRj/TduG5mZmbNjAzi1bpj3+1FNbJUlaM1kgWZfbjUfX0bxeZFXFU1SE7vNN6F5dH8OWJElYlsW2bdsIhULET51i6bJlfOPBtfQ23Eh3
 >> 
NEaospKdO3cWmLAsC8MwMLLZC0fU0oJ25508c++9rl+3tGyUVPVRAFWFh70j2Wm88C3gxo9bW4n19JDJZOg/cICXX3gBn883hiXbcdCDQe646y50XcdxHFRV5ciRI6TOniVn2yy95VZWfm85BlDx9ZlszZokD+3BMk0GBgaYNm0aQggkSbq0fFtbYdEiHtm8mTOPPrrh2WefTal18PydgH0eJABn33uPHKAB3wZOdnfz+Tl5WwJyQKffz9Jbby2AlGWZ06dPo7lcxA2Lw5WzSQM6sFKGvrnXsr+zjakelWQySXl5+eXp9tgxWLWKnyxeLO9U1Z+rh+ChDeC+ACPfWbZ8+cpwOIxhGHzQ0cGKFSsQQCaTKayc7TjcUVpKMM8GgOM4BAIBsrkcJbrO7o5/MX12NbcpI4VXTf9+orobK5fD7/efdx+ejxcBpPLdbxj87N137WPwpGrDpvRFstZ1S5asXLRoEUNDQ8SzWe5oakJVVbLZbOFDjhD4fT68Xm8hINu2CYfDuDSN0mAx/bvfZIfkcGJOhOpjB/mgtZXAlCm4AgEqKiowTXMCiGy+wpTyq5oGhvOVZymwDsTz8Ajwm0ulX3c2k+Hs8DDJRIJMKsVnfX2UlJQUAh7VdTAQGJMyHcfB6/WyevVqWlpamFtXx2BnG51/f5c+r5tgSQnRaJTm5maEEBPOplEgfYCZD94CpgB+4DHIvQQ/BlomlX4TiQSxWIzBwUFM05ywGWVZpqSkBF3XJwRjmiZz587l/vvvZyAWI5tJM1UBI5XCMAzWrl1LdXX1BDbGS8vKBxrOs3IPDLwEd4+CmMyBqKqqOuagGl9P6bpOUVFRAdT41TVNk/nz5xOJROjp6WF4eJiysjJmzZqFoihkL5JqRZ6JkjwTbwKPw+4+WAN0Xc7Jfqq9vd0uLi5WSktLUVUVVVULwUqSRDqd5sSJE3g8HrxeL5qm4XK5CswJITBNE6/XS0NDA7IsY9s2pm
 >> 
letPYSeQnVAfuBJyC5DZ5npA9fbony+z179vR1dnY2RSKRm1VVDbrdbkpLS0mn0xiGUaiCc7kcyWQSRVFwuVwFQKPgFUXBNE1kWS6wey7YcySArutoLhc9wE6wW+C1QVgP/POLuFjVAysjkchtNy5Z0nDd4sXuSCRCSSCA7DiYeTCjJc1ocJIkFYKXZRlFUcY8jwIdLfVTqRQdnZ38at269CddXW+nYTOw60rdEF9eJUk/9NfWojU0MHPBAmbX1VE1fTo+nw+Xy1WQn+M4E4CNgnAch2w2Szwep6enh48++shsb2/f393d/RfgT3l358rd2efBlpegzgaOAgeAFrf7pF5Zua+6qmpmKBQqr6io0MvKyhS/34/H40FRFGzbLtxPTp06Zff39yd7e3ujvb29B2Ox2F7gQ2BfPjldORflKrh5Fdz0GGiVQDy/yf4M/AieMUdclKnAVee4KMVAUT6DOvlD+QwwCAzkXZQk/2M7r6+lQIUONVOhugZqZkPoenBfD1SOm+B1YA109H/JvtYYp3EmiCYQm0F8COIzELlxTmMCxGEQr4JohKzvK+Q0TvB+AxAphppiKC+CYm2kqCSb934H4PjAiOf7lfF+/zMAVaPsnAfVjSoAAAAASUVORK5CYII=";
 >>           Base64.Decoder decoder = Base64.getDecoder();
 >>           ByteArrayInputStream rocketInputStream = new 
ByteArrayInputStream(decoder.decode(rocketImgStr)); ImageView iv = new 
ImageView(new Image(rocketInputStream));
 >>           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(4), path, iv);
 >>           pathTransition.setCycleCount(Animation.INDEFINITE);
 >> 
pathTransition.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT);
 >>           pathTransition.playFromStart();        Group root = new Group();
 >>           root.getChildren().add(iv);
 >>           Scene scene = new Scene(root, 600, 600);
 >>           primaryStage.setTitle("Hello World!");
 >>           primaryStage.setScene(scene);
 >>           primaryStage.show();
 >>       }
 >>
 >> thanks,
 >> jose
 >>
 >>
 >>
 >>
 >>
 >>
 >>
 >>
 >>
 >
 >
 >
 >




More information about the openjfx-dev mailing list