# HG changeset patch # User pchelko # Date 1398359345 -14400 # Node ID dca3eee75c1ace7a219f1314ad298e00a7e5aef1 # Parent 6655212b3399ee43cb81d9b043b3a419aea5e49c 8039097: Some tests fail with NPE since 7u60 b12 Reviewed-by: serb, alexsch diff -r 6655212b3399 -r dca3eee75c1a jdk/src/share/classes/java/awt/Toolkit.java --- a/jdk/src/share/classes/java/awt/Toolkit.java Mon Apr 07 00:31:06 2014 +0200 +++ b/jdk/src/share/classes/java/awt/Toolkit.java Thu Apr 24 21:09:05 2014 +0400 @@ -2568,23 +2568,30 @@ public void firePropertyChange(final PropertyChangeEvent evt) { Object oldValue = evt.getOldValue(); Object newValue = evt.getNewValue(); + String propertyName = evt.getPropertyName(); if (oldValue != null && newValue != null && oldValue.equals(newValue)) { return; } + Runnable updater = new Runnable() { + public void run() { + PropertyChangeSupport pcs = (PropertyChangeSupport) + AppContext.getAppContext().get(PROP_CHANGE_SUPPORT_KEY); + if (null != pcs) { + pcs.firePropertyChange(evt); + } + } + }; + final AppContext currentAppContext = AppContext.getAppContext(); for (AppContext appContext : AppContext.getAppContexts()) { if (null == appContext || appContext.isDisposed()) { continue; } - final PeerEvent e = new PeerEvent(source, - () -> { - PropertyChangeSupport pcs = (PropertyChangeSupport) - AppContext.getAppContext().get(PROP_CHANGE_SUPPORT_KEY); - if (null != pcs) { - pcs.firePropertyChange(evt); - } - }, - PeerEvent.ULTIMATE_PRIORITY_EVENT); - SunToolkit.postEvent(appContext, e); + if (currentAppContext == appContext) { + updater.run(); + } else { + final PeerEvent e = new PeerEvent(source, updater, PeerEvent.ULTIMATE_PRIORITY_EVENT); + SunToolkit.postEvent(appContext, e); + } } } } diff -r 6655212b3399 -r dca3eee75c1a jdk/src/windows/classes/sun/awt/windows/WToolkit.java --- a/jdk/src/windows/classes/sun/awt/windows/WToolkit.java Mon Apr 07 00:31:06 2014 +0200 +++ b/jdk/src/windows/classes/sun/awt/windows/WToolkit.java Thu Apr 24 21:09:05 2014 +0400 @@ -38,6 +38,7 @@ import java.security.PrivilegedAction; import sun.awt.AWTAutoShutdown; import sun.awt.AWTPermissions; +import sun.awt.AppContext; import sun.awt.LightweightFrame; import sun.awt.SunToolkit; import sun.awt.util.ThreadGroupUtils; @@ -930,7 +931,13 @@ * Windows doesn't always send WM_SETTINGCHANGE when it should. */ private void windowsSettingChange() { - updateProperties(); + if (AppContext.getAppContext() == null) { + // No AppContext, so we can update properties on the current thread, + // DesktopPropertyChangeSupport will only post events. + updateProperties(); + } else { + EventQueue.invokeLater(this::updateProperties); + } } private synchronized void updateProperties() {