From 46b732275a70448265d5f727dbc54179f646f960 Mon Sep 17 00:00:00 2001 From: psadhukhan Date: Thu, 21 Sep 2017 16:17:37 +0530 Subject: [PATCH] 8156042: Modifiers of swing ActionEvent does not work when "-Djavafx.embed.singleThread=true" Reviewed-by: azvegint --- .../share/classes/java/awt/EventQueue.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/java.desktop/share/classes/java/awt/EventQueue.java b/src/java.desktop/share/classes/java/awt/EventQueue.java index 1a48618f9b..cb499396a8 100644 --- a/src/java.desktop/share/classes/java/awt/EventQueue.java +++ b/src/java.desktop/share/classes/java/awt/EventQueue.java @@ -191,6 +191,8 @@ public class EventQueue { return eventLog; } + private static boolean fxAppThreadIsDispatchThread; + static { AWTAccessor.setEventQueueAccessor( new AWTAccessor.EventQueueAccessor() { @@ -227,6 +229,13 @@ public class EventQueue { return eventQueue.getMostRecentEventTimeImpl(); } }); + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + fxAppThreadIsDispatchThread = + "true".equals(System.getProperty("javafx.embed.singleThread")); + return null; + } + }); } /** @@ -854,9 +863,15 @@ public class EventQueue { private AWTEvent getCurrentEventImpl() { pushPopLock.lock(); try { + if (fxAppThreadIsDispatchThread) { + return (currentEvent != null) + ? currentEvent.get() + : null; + } else { return (Thread.currentThread() == dispatchThread) - ? currentEvent.get() - : null; + ? currentEvent.get() + : null; + } } finally { pushPopLock.unlock(); } @@ -1247,7 +1262,7 @@ public class EventQueue { private void setCurrentEventAndMostRecentTimeImpl(AWTEvent e) { pushPopLock.lock(); try { - if (Thread.currentThread() != dispatchThread) { + if (!fxAppThreadIsDispatchThread && Thread.currentThread() != dispatchThread) { return; } -- GitLab