--- old/src/macosx/classes/sun/lwawt/LWComponentPeer.java 2014-02-04 15:17:29.426049700 +0400 +++ new/src/macosx/classes/sun/lwawt/LWComponentPeer.java 2014-02-04 15:17:29.156049300 +0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,9 +42,6 @@ import java.awt.peer.KeyboardFocusManagerPeer; import java.util.concurrent.atomic.AtomicBoolean; -import java.lang.reflect.Field; -import java.security.AccessController; -import java.security.PrivilegedAction; import sun.awt.*; @@ -132,7 +129,7 @@ private volatile boolean isLayouting; private final D delegate; - private Container delegateContainer; + private final Container delegateContainer; private Component delegateDropTarget; private final Object dropTargetLock = new Object(); @@ -157,9 +154,6 @@ */ @SuppressWarnings("serial")// Safe: outer class is non-serializable. private final class DelegateContainer extends Container { - { - enableEvents(0xFFFFFFFF); - } // Empty non private constructor was added because access to this // class shouldn't be emulated by a synthetic accessor method. @@ -212,73 +206,27 @@ } // the delegate must be created after the target is set - AWTEventListener toolkitListener = null; - synchronized (Toolkit.getDefaultToolkit()) { - try { - toolkitListener = getToolkitAWTEventListener(); - setToolkitAWTEventListener(null); - - synchronized (getDelegateLock()) { - delegate = createDelegate(); - if (delegate != null) { - delegate.setVisible(false); - delegateContainer = new DelegateContainer(); - delegateContainer.add(delegate); - delegateContainer.addNotify(); - delegate.addNotify(); - resetColorsAndFont(delegate); - delegate.setOpaque(true); - } else { - return; - } - } - - } finally { - setToolkitAWTEventListener(toolkitListener); + synchronized (getDelegateLock()) { + delegate = createDelegate(); + if (delegate == null) { + delegateContainer = null; + return; } - - // todo swing: later on we will probably have one global RM - SwingUtilities3.setDelegateRepaintManager(delegate, new RepaintManager() { - @Override - public void addDirtyRegion(final JComponent c, final int x, final int y, final int w, final int h) { - repaintPeer(SwingUtilities.convertRectangle( - c, new Rectangle(x, y, w, h), getDelegate())); - } - }); + delegate.setVisible(false); + delegateContainer = new DelegateContainer(); + delegateContainer.add(delegate); + delegateContainer.addNotify(); + resetColorsAndFont(delegate); + delegate.setOpaque(true); } - } - - /** - * This method must be called under Toolkit.getDefaultToolkit() lock - * and followed by setToolkitAWTEventListener() - */ - protected final AWTEventListener getToolkitAWTEventListener() { - return AccessController.doPrivileged(new PrivilegedAction() { - public AWTEventListener run() { - Toolkit toolkit = Toolkit.getDefaultToolkit(); - try { - Field field = Toolkit.class.getDeclaredField("eventListener"); - field.setAccessible(true); - return (AWTEventListener) field.get(toolkit); - } catch (Exception e) { - throw new InternalError(e.toString()); - } - } - }); - } - protected final void setToolkitAWTEventListener(final AWTEventListener listener) { - AccessController.doPrivileged(new PrivilegedAction() { - public Void run() { - Toolkit toolkit = Toolkit.getDefaultToolkit(); - try { - Field field = Toolkit.class.getDeclaredField("eventListener"); - field.setAccessible(true); - field.set(toolkit, listener); - } catch (Exception e) { - throw new InternalError(e.toString()); - } - return null; + // todo swing: later on we will probably have one global RM + SwingUtilities3.setDelegateRepaintManager(delegate, new RepaintManager() { + @Override + public void addDirtyRegion(final JComponent c, final int x, + final int y, final int w, final int h) { + repaintPeer(SwingUtilities.convertRectangle( + c, new Rectangle(x, y, w, h), getDelegate())); } }); }