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 Martinez <jmartine_1...@yahoo.com>
 To: Kevin Rushforth <kevin.rushfo...@oracle.com> 
Cc: "openjfx-dev@openjdk.java.net" <openjfx-dev@openjdk.java.net>; Lord Chaos 
<joearo...@gmail.com>
 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 <kevin.rushfo...@oracle.com>
 To: Jose Martinez <jmartine_1...@yahoo.com> 
Cc: "openjfx-dev@openjdk.java.net" <openjfx-dev@openjdk.java.net>; Lord Chaos 
<joearo...@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.rushfo...@oracle.com>
>  To: Jose Martinez <jmartine_1...@yahoo.com> 
> Cc: "openjfx-dev@openjdk.java.net" <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 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 <t...@tbee.org>
>  To: openjfx-dev@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
>
>        
>      
>    
>  
>
>
>    
>  


   

   

Reply via email to