<Swing Dev> JDK-8178091 : Bug I will workin on

Sergey Bylokhov sergey.bylokhov at oracle.com
Wed Apr 12 21:41:32 UTC 2017


(CC) 2d-dev
If some of these options helps then most probably the bug is in the Java2D pipeline(XRender?) and looks like this is duplicate of:
https://bugs.openjdk.java.net/browse/JDK-8068529 <https://bugs.openjdk.java.net/browse/JDK-8068529>


> 
> OK , 
> So I did severals tests with theses options with programms using full repaint() method
> ,and it still work well, 
> but occasionnaly ,the lag is here again ,particularly when there are a lot component on the screen (Jpanel screen)
> 
> indeed , I think it is not normal that we need theses options to work well ,
> but it seem the problem does not come from Swing package , but repaint() method in AWT package ,
> 
> 2017-04-12 21:26 GMT+02:00 Patrick Chen <chen.j.patrick at gmail.com <mailto:chen.j.patrick at gmail.com>>:
> OK , 
> So I did severals tests with theses options with programms using full repaint() method
> ,and it still work well, 
> but occasionnaly ,the lag is here again ,particularly when there are a lot component on the screen (Jpanel screen)
> 
> indeed , I think it is not normal that we need theses options to work well ,
> but it seem the problem does not come from Swing package , but repaint() method in AWT package ,
> 
> 
> 
> 2017-04-11 19:18 GMT+02:00 Sergey Bylokhov <sergey.bylokhov at oracle.com <mailto:sergey.bylokhov at oracle.com>>:
> 
>> Hi , 
>> yes ; 
>> with theses options it works ! 
>> but what that means ? 
> 
> Is it works in case of any options or in some cases it does not work? Please double check.
> 
>> 
>> so it not a bug ? 
>> 
>> 2017-04-11 18:46 GMT+02:00 Sergey Bylokhov <sergey.bylokhov at oracle.com <mailto:sergey.bylokhov at oracle.com>>:
>> Hi, Patrick.
>> Can you please run the code using these options:
>> -Dsun.java2d.xrender=true
>> -Dsun.java2d.xrender=false
>> -Dsun.java2d.opengl=true
>> -Dsun.java2d.opengl=false
>> 
>> 
>>> 
>>> After tests it seems that the problem doesn't come from Timer , but 
>>> the repaint() method , 
>>> 
>>> 
>>> even with this code the bug is here.
>>> the bug is on Linux.
>>> 
>>> 2017-04-11 11:07 GMT+02:00 Walter Laan <WLaan at costengineering.eu <mailto:WLaan at costengineering.eu>>:
>>> Note that the example code in JDK-8178091 sleeps on the EDT, so you’re lucky it paints at all instead of hanging the UI.
>>> 
>>>  
>>> 
>>> It looks like you adapted the code from http://codereview.stackexchange.com/questions/29630/simple-java-animation-with-swing <http://codereview.stackexchange.com/questions/29630/simple-java-animation-with-swing> where no-one experienced with Swing pointed out this error L.
>>> 
>>>  
>>> 
>>> Using a javax.swing.Timer (not the java.util.Timer!) and it runs okay (using Win10, Java 8u101):
>>> 
>>>  
>>> 
>>>     private void go() {
>>> 
>>>  
>>> 
>>>         new Timer(10, new ActionListener() {
>>> 
>>>             // Les coordonnées de départ de notre rond
>>> 
>>>             private int x = pan.getPosX(), y = pan.getPosY();
>>> 
>>>             // Le booléen pour savoir si l'on recule ou non sur l'axe x
>>> 
>>>             private boolean backX = false;
>>> 
>>>             // Le booléen pour savoir si l'on recule ou non sur l'axe y
>>> 
>>>             private boolean backY = false;
>>> 
>>>  
>>> 
>>>             @Override
>>> 
>>>             public void actionPerformed(ActionEvent e) {
>>> 
>>>                 // Si la coordonnée x est inférieure à 1, on avance
>>> 
>>>                 if(x < 1) {
>>> 
>>>                     backX = false;
>>> 
>>>                 }
>>> 
>>>                 // Si la coordonnée x est supérieure à la taille du Panneau moins la taille du rond, on recule
>>> 
>>>                 if(x > pan.getWidth() - 50) {
>>> 
>>>                     backX = true;
>>> 
>>>                 }
>>> 
>>>                 // Idem pour l'axe y
>>> 
>>>                 if(y < 1) {
>>> 
>>>                     backY = false;
>>> 
>>>                 }
>>> 
>>>                 if(y > pan.getHeight() - 50) {
>>> 
>>>                     backY = true;
>>> 
>>>                 }
>>> 
>>>  
>>> 
>>>                 // Si on avance, on incrémente la coordonnée
>>> 
>>>                 // backX est un booléen, donc !backX revient à écrire
>>> 
>>>                 // if (backX == false)
>>> 
>>>                 if(!backX) {
>>> 
>>>                     pan.setPosX(++x);
>>> 
>>>                 // Sinon, on décrémente
>>> 
>>>                 }
>>> 
>>>                 else {
>>> 
>>>                     pan.setPosX(--x);
>>> 
>>>                 }
>>> 
>>>                 // Idem pour l'axe Y
>>> 
>>>                 if(!backY) {
>>> 
>>>                     pan.setPosY(++y);
>>> 
>>>                 }
>>> 
>>>                 else {
>>> 
>>>                     pan.setPosY(--y);
>>> 
>>>                 }
>>> 
>>>  
>>> 
>>>                 // On redessine notre Panneau
>>> 
>>>                 pan.repaint();
>>> 
>>>             }
>>> 
>>>         }).start();
>>> 
>>>     }
>>> 
>>>  
>>> 
>>> Hope that helps,
>>> 
>>> Walter.
>>> 
>>>  
>>> 
>>> From: swing-dev [mailto:swing-dev-bounces at openjdk.java.net <mailto:swing-dev-bounces at openjdk.java.net>] On Behalf Of Patrick Chen
>>> Sent: maandag 10 april 2017 12:23
>>> To: swing-dev at openjdk.java.net <mailto:swing-dev at openjdk.java.net>
>>> Subject: Re: <Swing Dev> JDK-8178091 : Bug I will workin on
>>> 
>>>  
>>> 
>>> (edit : for example this game coded in java : https://github.com/cloudStrif/GoldenSunD <https://github.com/cloudStrif/GoldenSunD> will work with java 7
>>> 
>>> but clearly not with java8 (linux 64 bits) because of lags)
>>> 
>>>  
>>> 
>>> 2017-04-10 12:19 GMT+02:00 Patrick Chen <chen.j.patrick at gmail.com <mailto:chen.j.patrick at gmail.com>>:
>>> 
>>> Hi every one , 
>>> 
>>> just wanted to inform that I am working to fix this bug.
>>> 
>>>  
>>> 
>>> it is when we devellop animations thanks to repaint() method , 
>>> 
>>> for java 7 it works well 
>>> 
>>> but with java8 not , 
>>> 
>>> (linux 64 bits it doesn't really work ) 
>>> 
>>>  
>>> 
>>> so after watching the source code it seem that it is not a swing problem 
>>> 
>>> but AWT : Component.java .
>>> 
>>>  
>>> 
>>> thank you
>>> 
>>>  
>>> 
>>>  
>>> 
>>>  
>>> 
>>> 
>> 
>> 
> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20170413/4f2cc4a4/attachment.html>


More information about the swing-dev mailing list