Mercurial > hg > openjdk > icedtea > jdk7 > jdk
changeset 5513:038b17edbb4b
7184951: [macosx] Exception at java.awt.datatransfer on headless mode (only in GUI session)
Reviewed-by: art, serb
author | kizune |
---|---|
date | Tue, 24 Jul 2012 12:43:40 +0400 |
parents | 348fea6059d2 |
children | f2738a05273d |
files | src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java src/macosx/classes/sun/lwawt/macosx/CToolkitThreadBlockedHandler.java |
diffstat | 2 files changed, 11 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java Mon Jul 23 21:52:27 2012 +0400 +++ b/src/macosx/classes/sun/lwawt/macosx/CDataTransferer.java Tue Jul 24 12:43:40 2012 +0400 @@ -182,6 +182,10 @@ Long format = predefinedClipboardNameMap.get(str); if (format == null) { + if (java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().isHeadlessInstance()) { + // Do not try to access GUI manager for unknown format + return new Long(-1); + } format = new Long(registerFormatWithPasteboard(str)); predefinedClipboardNameMap.put(str, format); predefinedClipboardFormatMap.put(format, str);
--- a/src/macosx/classes/sun/lwawt/macosx/CToolkitThreadBlockedHandler.java Mon Jul 23 21:52:27 2012 +0400 +++ b/src/macosx/classes/sun/lwawt/macosx/CToolkitThreadBlockedHandler.java Tue Jul 24 12:43:40 2012 +0400 @@ -28,7 +28,10 @@ import sun.awt.datatransfer.ToolkitThreadBlockedHandler; final class CToolkitThreadBlockedHandler implements ToolkitThreadBlockedHandler { - private final LWCToolkit toolkit = (LWCToolkit)java.awt.Toolkit.getDefaultToolkit(); + private final LWCToolkit toolkit = + java.awt.Toolkit.getDefaultToolkit() instanceof LWCToolkit + ? (LWCToolkit)java.awt.Toolkit.getDefaultToolkit() + : null; public void lock() { } @@ -44,7 +47,9 @@ // Despite the naming of this method, on MacOS only one // event is read and dispatched before this method returns. // This call is non-blocking and does not wait for an event - toolkit.startNativeNestedEventLoop(); + if (toolkit != null) { + toolkit.startNativeNestedEventLoop(); + } } public void exit() {