[OpenJDK 2D-Dev] <Swing Dev> JDK-8178091 : Bug I will workin on

Patrick Chen chen.j.patrick at gmail.com
Mon Apr 17 10:33:08 UTC 2017


so here a webrev :

2017-04-12 23:41 GMT+02:00 Sergey Bylokhov <sergey.bylokhov at oracle.com>:

> (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
>
>
>
> 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>:
>
>> 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>:
>>
>>>
>>> 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>:
>>>
>>>> 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>:
>>>>
>>>>> 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.stackexchang
>>>>> e.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] *On
>>>>> Behalf Of *Patrick Chen
>>>>> *Sent:* maandag 10 april 2017 12:23
>>>>> *To:* 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 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>:
>>>>>
>>>>> 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/2d-dev/attachments/20170417/10084162/attachment.html>


More information about the 2d-dev mailing list