On Thu, 14 Nov 2019 11:33:24 GMT, Dean Wookey <dwoo...@openjdk.org> wrote:
> On Wed, 13 Nov 2019 19:10:45 GMT, David Grieve > <github.com+4412658+dsgri...@openjdk.org> wrote: > >> On Tue, 12 Nov 2019 16:55:45 GMT, Ajit Ghaisas <aghai...@openjdk.org> wrote: >> >>> On Tue, 12 Nov 2019 16:52:54 GMT, Ajit Ghaisas <aghai...@openjdk.org> wrote: >>> >>>> On Tue, 12 Nov 2019 16:45:04 GMT, Ajit Ghaisas <aghai...@openjdk.org> >>>> wrote: >>>> >>>>> **Issue :** >>>>> https://bugs.openjdk.java.net/browse/JDK-8193445 >>>>> >>>>> **Background :** >>>>> The CSS performance improvement done in >>>>> [JDK-8151756](https://bugs.openjdk.java.net/browse/JDK-8151756) had to be >>>>> backed out due to functional regressions reported in >>>>> [JDK-8185709](https://bugs.openjdk.java.net/browse/JDK-8185709), >>>>> [JDK-8183100](https://bugs.openjdk.java.net/browse/JDK-8183100) and >>>>> [JDK-8168951](https://bugs.openjdk.java.net/browse/JDK-8168951). >>>>> Refer to [JDK-8183100](https://bugs.openjdk.java.net/browse/JDK-8183100) >>>>> for more details on this backout. >>>>> >>>>> **Description :** >>>>> This PR reintroduces the CSS performance improvement fix done in >>>>> [JDK-8151756](https://bugs.openjdk.java.net/browse/JDK-8151756) while >>>>> addressing the functional regressions that were reported in >>>>> [JDK-8185709](https://bugs.openjdk.java.net/browse/JDK-8185709), >>>>> [JDK-8183100](https://bugs.openjdk.java.net/browse/JDK-8183100) and >>>>> [JDK-8168951](https://bugs.openjdk.java.net/browse/JDK-8168951). >>>>> For ease of review, I have made two separate commits - >>>>> 1) [Commit >>>>> 1](https://github.com/openjdk/jfx/pull/34/commits/d964675ebc2a42f2fd6928b773819502683f2334) >>>>> - Reintroduces the CSS performance improvement fix done in >>>>> [JDK-8151756](https://bugs.openjdk.java.net/browse/JDK-8151756) - most of >>>>> the patch applied cleanly. >>>>> 2) [Commit 2 >>>>> ](https://github.com/openjdk/jfx/pull/34/commits/12ea8220a730ff8d98d520ce870691d54f0de00f)- >>>>> fixes the functional regressions keeping performance improvement intact >>>>> + adds a system test >>>>> >>>>> **Root Cause :** >>>>> CSS performance improvement fix proposed in [JDK-8151756 >>>>> ](https://bugs.openjdk.java.net/browse/JDK-8151756)correctly avoids the >>>>> redundant CSS reapplication to children of a Parent. >>>>> What was missed earlier in [JDK-8151756 >>>>> ](https://bugs.openjdk.java.net/browse/JDK-8151756) fix : "CSS >>>>> reapplication to the Parent itself”. >>>>> This missing piece was the root cause of all functional regressions >>>>> reported against >>>>> [JDK-8151756](https://bugs.openjdk.java.net/browse/JDK-8151756) >>>>> >>>>> **Fix :** >>>>> Fixed the identified root cause. See commit 2. >>>>> >>>>> **Testing :** >>>>> 1. All passing unit tests continue to pass >>>>> 2. New system test (based on >>>>> [JDK-8209830](https://bugs.openjdk.java.net/browse/JDK-8209830)) added in >>>>> this PR - fails before this fix and passes after the fix >>>>> 3. System test JDK8183100Test continues to pass >>>>> 4. All test cases attached to regressions >>>>> [JDK-8185709](https://bugs.openjdk.java.net/browse/JDK-8185709), >>>>> [JDK-8183100](https://bugs.openjdk.java.net/browse/JDK-8183100) and >>>>> [JDK-8168951](https://bugs.openjdk.java.net/browse/JDK-8168951) pass with >>>>> this fix >>>>> >>>>> In addition, testing by community with specific CSS performance / >>>>> functionality will be helpful. >>>>> >>>>> ---------------- >>>>> >>>>> Commits: >>>>> - 12ea8220: Fix for functional regressions of JDK-8151756 + add a sytem >>>>> test >>>>> - d964675e: Reintroduce JDK-8151756 CSS performance fix >>>>> >>>>> Changes: https://git.openjdk.java.net/jfx/pull/34/files >>>>> Webrev: https://webrevs.openjdk.java.net/jfx/34/webrev.00 >>>>> Issue: https://bugs.openjdk.java.net/browse/JDK-8193445 >>>>> Stats: 121 lines in 5 files changed: 104 ins; 0 del; 17 mod >>>>> Patch: https://git.openjdk.java.net/jfx/pull/34.diff >>>>> Fetch: git fetch https://git.openjdk.java.net/jfx pull/34/head:pull/34 >>>> >>>> Reviewers: @kevinrushforth and @arapte >>> >>> It will be helpful if I can get some feedback from community with >>> additional testing apart from what is mentioned in the description. >> >> Has this been checked with SubScene? Two cases would be 1) SubScene >> inheriting a style from its parent, and 2) behavior of a parent in the >> SubScene itself. I don't expect that this would be an issue, but there is >> some special handling of CSS in SubScene IIRC. > > Having looked at this issue previously > (https://mail.openjdk.java.net/pipermail/openjfx-dev/2018-November/022842.html > and > https://github.com/DeanWookey/openjdk-jfx/commit/65a1ed82bce262294f1969e9a12e1126ec8a1ec6), > I'm a bit confused. > > Doesn't commit > https://github.com/openjdk/jfx/pull/34/commits/12ea8220a730ff8d98d520ce870691d54f0de00f > essentially add another reapplyCSS() above the scenesChanged call on line > 1074? I'm guessing this works because reapplyCss() (different from > reapplyCSS()) sets cssFlag to UPDATE, which then means subsequent calls to > reapplyCSS() don't call reapplyCss()? > > Does this leave the whole tree with the CssFlags.REAPPLY set instead of > CssFlags.UPDATE as they would be without these changes? I'm not sure about > the impact of that. > > I'm also curious whether commit 1 is even necessary with commit 2. The above raises good questions about the effect of adding a call to `reapplyCSS` when `scenesChanged` is called. This will need a careful analysis. Regarding whether commit 2 by itself would be sufficient, my initial guess was that it wouldn't be. However, I tested it, and it does in fact improve performance of the test case. Very interesting. PR: https://git.openjdk.java.net/jfx/pull/34