PathTransition jitter

Hermann Maier Ignatiamus at gmail.com
Mon May 8 05:55:26 UTC 2017


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 Maier <Ignatiamus at gmail.com> wrote:
>
>> 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=
>>>> "iVBORw0KGgoAAAANSUhEUgAAADIAAAAdCAYAAADoxT9SAAAACXBIWXMAAAs
>> YAAALGAGJqbUQAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN
>> nVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8i
>> giAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwf
>> ACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsA
>> HvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYC
>> dmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhE
>> AGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUp
>> AAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4o
>> zkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t
>> 6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZr
>> IPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/P
>> f14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41
>> EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWH
>> TA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCA
>> AARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzb
>> AdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/ph
>>>> CJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgx
>> UopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQ
>> ZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNj
>> y7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0
>> EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMy
>> J7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPk
>> G+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h
>> tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX
>> 6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgq
>> tip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtV
>> qp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gs
>> IWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0
>> TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1F
>> u1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+
>> 6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzw
>> dL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZ
>> LTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz
>>>> 0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna
>> 0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+
>> 6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2D
>> PjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60v
>> Wdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+
>> VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/
>> MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzr
>> bZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mG
>> Lw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5
>> qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1
>> weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtG
>> I2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq
>> 9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2Qqb
>> oVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0
>> dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoL
>> BtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG
>> 4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N
>>>> 2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLd
>> tWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvtt
>> Xa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/
>> p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaR
>> ptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19f
>> i753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV
>> 7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/
>> 1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+
>> 3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L
>> 96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/
>> erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/
>> 2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAg
>> OkAAHUwAADqYAAAOpgAABdvkl/FRgAACHRJREFUeNrMmH9s1OUdx1/fH/
>> e9u2/vrgdtaaXt9ZDRXoeGEsAxN0EWGWwoohFnTGrqZkxMxEW00TkzFrcpuK
>> gJJFIyzeIgGzAX4485nSmdKM2mrGUtIBMKpfWoHOXo9bi77933x7M/
>> er3Qlh9lk+mTPMl9c8/3+X7ez/v9fJ7P85YYaQGgRoVZHoj4ITIVaqZAuR+K
>> PeBWgAw4Q5D4DI73QbuAt4F2viKtGegAEl8DcQ+IjSB2gTgKIgVCnNNtEDEQ
>> fwXxAGQD8Aeg5ssGIQGzgXLApUJAga
>>>> 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";
>>>>           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