<Swing Dev> [OpenJDK 2D-Dev] JDK-8178091 : Bug I will workin on
Philip Race
philip.race at oracle.com
Thu Apr 20 23:30:08 UTC 2017
If appropriate conceptually (and I am not sure it is), then this
is better addressed in a more localised way in code specific to
the xrender pipeline which is the only pipeline that has this
problem .. correct ? And if it is only in this pipeline an investigation
into the specifics of what is different would be the place to start.
-phil.
On 4/20/17, 5:40 AM, Patrick Chen wrote:
> edit : So (sorry if I repeat myseft )
>
> what I propose :
>
> webrev :
> http://cr.openjdk.java.net/~alexsch/chen.j.patrick/8178091/webrev.01/
> <http://cr.openjdk.java.net/%7Ealexsch/chen.j.patrick/8178091/webrev.01/>
>
> bug : JDK-8178091
>
> 2017-04-20 11:37 GMT+02:00 Patrick Chen <chen.j.patrick at gmail.com
> <mailto:chen.j.patrick at gmail.com>>:
>
> Hi ,
> thank you Alexandr !
>
> You are right Phil , but for the moment I did a lot of tests , and
> it seems that there is no problems with this method ...
> so as the bug is only on Linux I check on the method if we are on
> linux or not , then only I sync() ,
> like this , on other system ,it will use the asynchrone repaint()
> method ,
>
> I think for the moment it is a possible way to correct the
> JDK-8178091 bug ,
> of course , it is maybe not final ,
> but it works well.
>
> -Pat
>
> 2017-04-19 18:27 GMT+02:00 Phil Race <philip.race at oracle.com
> <mailto:philip.race at oracle.com>>:
>
>
>
> On 04/19/2017 12:51 AM, Patrick Chen wrote:
>> Ok so can you take the source from the git ?
>
> Sounds the same to me as reviewing it there ..
>
>> You probably have an account in cr.openjdk.java.net
>> <http://cr.openjdk.java.net/> ,
>>
>>
>> but Another solution to fix the bug 8178091 is to write a
>> repaint() method from Component.java
>> (as we all know : JPanel.java -->(extends) >Jcomponent.java
>> -->(extends)-> Composent.java)
>>
>> and the repaint() method is on Component.java
>>
>>
>> So in JPanel.java we add a method repaint() ;
>>
>> public void repaint(){
>> super.repaint() ; //this call repaint() from Component.java
>> to reproduce a simple repaint();
>> Toolkit.getDefaultToolkit().sync();
>> }
>
> sync sounds to me more like adding a performance problem
> rather than fixing one.
> I'd be very reluctant to accept such a change in core JDK
> without appropriate
> performance testing across all affected pipelines and platforms.
>
> And I don't think it is correct anyway. repaint is
> asynchronous and trying
> to make it synchronous is redefining it 20 years too late.
>
> But if you do it yourself in your own code that is up to you ...
>
> -phil.
>
>
>>
>> so with this each time we call repaint() ; it call our new
>> repaint() method with the sync();
>> and then it works well
>>
>>
>>
>> 2017-04-17 16:24 GMT+02:00 Philip Race
>> <philip.race at oracle.com <mailto:philip.race at oracle.com>>:
>>
>> Per openjdk rules, we cannot review or accept webrevs
>> hosted anywhere
>> other than cr.openjdk.java.net
>> <http://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
>> <http://openjdk.java.net/guide/changePlanning.html>
>>
>>
>> On 4/17/17, 3:42 AM, Patrick Chen wrote:
>>> https://github.com/cloudStrif/webrev
>>> <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/swing-dev/attachments/20170420/eb2434dd/attachment.html>
More information about the swing-dev
mailing list