[java-atk-wrapper] Do not defer execution to EDT when we are already in it



commit c7ed8bb104cd891e3fb9f020edea680d2fd44447
Author: Samuel Thibault <samuel thibault ens-lyon org>
Date:   Fri Jun 14 09:04:36 2019 +0200

    Do not defer execution to EDT when we are already in it

 wrapper/org/GNOME/Accessibility/AtkUtil.java | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
---
diff --git a/wrapper/org/GNOME/Accessibility/AtkUtil.java b/wrapper/org/GNOME/Accessibility/AtkUtil.java
index aa4a90d..788520a 100644
--- a/wrapper/org/GNOME/Accessibility/AtkUtil.java
+++ b/wrapper/org/GNOME/Accessibility/AtkUtil.java
@@ -52,6 +52,16 @@ public class AtkUtil{
     *       corresponding object
     */
     public static <T> T invokeInSwing (Callable <T> function, T d){
+        if (SwingUtilities.isEventDispatchThread()) {
+          // We are already running in the EDT, we can call it directly
+          try {
+            return function.call();
+          } catch (Exception ex) {
+            ex.printStackTrace(); // we can do better than this
+            return d;
+          }
+        }
+
         RunnableFuture<T> wf = new FutureTask<>(function);
         SwingUtilities.invokeLater(wf);
         try {
@@ -70,6 +80,12 @@ public class AtkUtil{
     * @param function A Runnable object that doesn't return some value
     */
     public static void invokeInSwing (Runnable function){
+        if (SwingUtilities.isEventDispatchThread()) {
+          // We are already running in the EDT, we can call it directly
+          function.run();
+          return;
+        }
+
         SwingUtilities.invokeLater(function);
     }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]