<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-text-flowed" style="font-family: -moz-fixed;
      font-size: 14px;" lang="x-unicode">Hi AWT, Swing teams,
      <br>
      <br>
      Could you please review the backport of JDK-8046559 to jdk7:
      <br>
          bug: <a class="moz-txt-link-freetext"
        href="https://bugs.openjdk.java.net/browse/JDK-8046559">https://bugs.openjdk.java.net/browse/JDK-8046559</a>
      <br>
          webrev:
      <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~aivanov/8046559/jdk7/webrev.00/">http://cr.openjdk.java.net/~aivanov/8046559/jdk7/webrev.00/</a><br>
      <br>
      <br>
      Changes between jdk9 and jdk7:<br>
      <br>
      I replaced labmda expression in WToolkit.java with anonymous
      class.<br>
      It is the only change from the previous webrev:<br>
      <a class="moz-txt-link-freetext"
href="http://mail.openjdk.java.net/pipermail/awt-dev/2014-July/008147.html">http://mail.openjdk.java.net/pipermail/awt-dev/2014-July/008147.html</a><br>
<a class="moz-txt-link-freetext" href="http://mail.openjdk.java.net/pipermail/swing-dev/2014-July/003657.html">http://mail.openjdk.java.net/pipermail/swing-dev/2014-July/003657.html</a><br>
      <br>
      <br>
      Latest jdk9 webrev:
      <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~aivanov/8046559/jdk9/webrev.01/">http://cr.openjdk.java.net/~aivanov/8046559/jdk9/webrev.01/</a><br>
      <br>
      <br>
      The information is below is copied from jdk9 review for the sake
      of completeness.<br>
      <br>
      <br>
      Problem description:
      <br>
      When changing Windows themes from a theme with visual styles
      (Windows Aero or Windows Basic) to a classic one,
      NullPointerException could be thrown from Swing code during
      component tree validation, or InternalError could be thrown during
      component painting.
      <br>
      <br>
      Root cause:
      <br>
      Windows theme data are accessed via XPStyle and ThemeReader. When
      the theme is switched to a classic one, theme handles become
      unavailable, and theme data cannot be accessed any more. The
      change in theme is posted to EDT; at the same time, the UI often
      needs to repaint before the theme change is completely handled in
      Swing. This leads to NPE and InternalError as the code tries to
      access the data that has become unavailable.
      <br>
      <br>
      The fix:
      <br>
      Windows desktop properties are updated right on Windows Toolkit
      thread, and the value of "win.xpstyle.themeActive" is stored in
      ThemeReader.xpStyleEnabled field. PropertyChangeEvents for desktop
      properties are delivered either synchronously on EDT or
      asynchronously via DesktopPropertyChangeSupport, as it used to be.
      <br>
      <br>
      Getters in XPStyle class check for null values and return dummy
      defaults if ThemeReader returned null. SkinPainters also check
      whether theming is still available before asking ThemeReader to
      paint.
      <br>
      <br>
      Access to XPStyle.xp instance is blocked as soon as user switches
      themes. The object will be cleaned when the corresponding
      PropertyChangeEvent is handled by Swing.
      <br>
      <br>
      <br>
      This new version of the fix addresses issues found with the
      initial submission of JDK-8039383 fix:
      <br>
        - JDK-8046239: Build failure in 9-client on all non-Windows
      platforms
      <br>
        - JDK-8046391: Hang displaying JFileChooser with Windows L&F
      <br>
      <br>
      See also <a class="moz-txt-link-freetext"
href="http://mail.openjdk.java.net/pipermail/awt-dev/2014-June/007975.html">http://mail.openjdk.java.net/pipermail/awt-dev/2014-June/007975.html</a>
      <br>
      and <a class="moz-txt-link-freetext"
        href="http://cr.openjdk.java.net/%7Eaivanov/8039383/jdk9/webrev.03/">http://cr.openjdk.java.net/~aivanov/8039383/jdk9/webrev.03/</a>
      <br>
      <br>
      <br>
      Regression test:
      <br>
      No regression test is provided due to its complexity. Whether
      NullPointerException or InternalError are thrown depends on the
      order of event handling, sometimes exceptions do not occur when
      changing theme of visual styles enabled theme to a classic theme.
      <br>
      <br>
      I included regression test for hang in JFileChooser, JDK-8046391.
      <br>
      <br>
      <br>
      Thank you,
      <br>
      Alexey.<br>
    </div>
  </body>
</html>