<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<br>
<font face="DejaVu Sans">Morning,<br>
<br>
I think i've [1], on a couple of systems [2,3] and with no-where
else to communicate that I'm writing to the list. If it matters
both are using the amdgpu driver, xfce4, and X.org with tearfree
enabled, with or without a compositor. It manifests itself as the
window updating at an uncapped framerate, high cpu use, etc.<br>
<br>
It was from using a Transition animation with the default
frame-rate.<br>
<br>
From what I can tell it's due to </font><font face="DejaVu Sans">PaintCollector.done()
calling </font><font face="DejaVu Sans">QuantumToolkit.</font><font
face="DejaVu Sans">vsyncHint() which always calls postPulse()
which usually calls the pulse handler for whatever reason
(animation is active?) - which re-runs the animation, which
re-triggers and update, and so on.<br>
<br>
</font><font face="DejaVu Sans">If I simply comment out the
invocation of postPulse() in vsyncHint() then the animation
defaults to a sort-of 60hz. The timing isn't very accurate and
has fairly regular (bit ugly) jumps - although this also happens
if I use a rate that matches my screens which don't run at 60.<br>
<br>
Looking through QuantumToolkit and related stuff I can't see
anything obvious, it seems like that's the way it's supposed to
work? Unless redraws are being retriggered when they shouldn't
be. Even the trivial example below shows it - Hello spins at a
wild rate.<br>
<br>
I've got a lot of time on my hands so can look into it, if there's
anything to look into?<br>
<br>
Regards,<br>
Michael<br>
</font><font face="DejaVu Sans"><br>
[1] <a class="moz-txt-link-freetext" href="https://bugs.openjdk.org/browse/JDK-8210547">https://bugs.openjdk.org/browse/JDK-8210547</a><br>
[2] gentoo, liunux 6.12.36, AMD Ryzen 4700U APU.<br>
[3] slackare64-current linux 6.12.29, Ryzen 3900X, Radeon HD7970.<br>
<br>
<br>
--<br>
simple example :<br>
<br>
Group g = new Group(new Text("Hello"));<br>
g.setTranslateX(100);<br>
g.setTranslateY(100);<br>
root.getChildren().setAll(g);<br>
Transition anim = new Transition() {<br>
double arg = 0;<br>
<br>
{<br>
setCycleCount(INDEFINITE);<br>
setCycleDuration(Duration.seconds(1));<br>
}<br>
<br>
@Override<br>
protected void interpolate(double frac) {<br>
g.setRotate(arg++);<br>
}<br>
};<br>
anim.play();</font>
</body>
</html>