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.patr...@gmail.com <mailto:chen.j.patr...@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.r...@oracle.com
    <mailto:philip.r...@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.r...@oracle.com <mailto:philip.r...@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.patr...@gmail.com
            <mailto:chen.j.patr...@gmail.com>>:

                so here a webrev :

                2017-04-12 23:41 GMT+02:00 Sergey Bylokhov
                <sergey.bylok...@oracle.com
                <mailto:sergey.bylok...@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.patr...@gmail.com
                    <mailto:chen.j.patr...@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.bylok...@oracle.com
                        <mailto:sergey.bylok...@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.bylok...@oracle.com
                            <mailto:sergey.bylok...@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 <wl...@costengineering.eu
                                <mailto:wl...@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-boun...@openjdk.java.net
                                    <mailto:swing-dev-boun...@openjdk.java.net>]
                                    *On Behalf Of *Patrick Chen
                                    *Sent:* maandag 10 april 2017
                                    12:23
                                    *To:*
                                    swing-...@openjdk.java.net
                                    <mailto:swing-...@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.patr...@gmail.com
                                    <mailto:chen.j.patr...@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














Reply via email to