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

Philip Race philip.race at oracle.com
Mon Apr 17 14:24:33 UTC 2017


Per openjdk rules, we cannot review or accept webrevs hosted anywhere
other than cr.openjdk.java.net [1]

Generally you ask someone who has a login there to do it for you

Or you may try submitting the patch in-line to this email if it is short.

Not an attachment. It will get stripped.

-phil.

[1] http://openjdk.java.net/guide/changePlanning.html

On 4/17/17, 3:42 AM, Patrick Chen wrote:
> https://github.com/cloudStrif/webrev
>
>
> 2017-04-17 12:33 GMT+02:00 Patrick Chen <chen.j.patrick at gmail.com 
> <mailto:chen.j.patrick at gmail.com>>:
>
>     so here a webrev :
>
>     2017-04-12 23:41 GMT+02:00 Sergey Bylokhov
>     <sergey.bylokhov at oracle.com <mailto: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
>         <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/2d-dev/attachments/20170417/e4e93f62/attachment.html>


More information about the 2d-dev mailing list