summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsDialog.java
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-12-30 10:57:11 +0800
committerPo Lu <luangruo@yahoo.com>2023-12-30 10:57:11 +0800
commit94e3d1159334d08fd1d54464bf6173755ba606b7 (patch)
treeba28a88365830b45015af5fd8a0051367ae42683 /java/org/gnu/emacs/EmacsDialog.java
parentfe2b68d405251498518b279a17a87f4cbcf82479 (diff)
Simplify code relating to UI thread synchronization
* java/org/gnu/emacs/EmacsContextMenu.java (display): * java/org/gnu/emacs/EmacsDialog.java (display): * java/org/gnu/emacs/EmacsService.java (getEmacsView) (getLocationOnScreen, getClipboardManager) (requestDirectoryAccess): Replace manual synchronization within Runnable objects by usage of FutureTask. (syncRunnable): Accept FutureTask<V> in place of Runnables, and obtain and return results from calls to its get method.
Diffstat (limited to 'java/org/gnu/emacs/EmacsDialog.java')
-rw-r--r--java/org/gnu/emacs/EmacsDialog.java25
1 files changed, 10 insertions, 15 deletions
diff --git a/java/org/gnu/emacs/EmacsDialog.java b/java/org/gnu/emacs/EmacsDialog.java
index bad1ddde227..7552b16b370 100644
--- a/java/org/gnu/emacs/EmacsDialog.java
+++ b/java/org/gnu/emacs/EmacsDialog.java
@@ -22,6 +22,9 @@ package org.gnu.emacs;
import java.util.List;
import java.util.ArrayList;
+import java.util.concurrent.Callable;
+import java.util.concurrent.FutureTask;
+
import android.app.AlertDialog;
import android.content.Context;
@@ -388,26 +391,18 @@ public final class EmacsDialog implements DialogInterface.OnDismissListener
public boolean
display ()
{
- Runnable runnable;
- final EmacsHolder<Boolean> rc;
+ FutureTask<Boolean> task;
- rc = new EmacsHolder<Boolean> ();
- rc.thing = false;
- runnable = new Runnable () {
+ task = new FutureTask<Boolean> (new Callable<Boolean> () {
@Override
- public void
- run ()
+ public Boolean
+ call ()
{
- synchronized (this)
- {
- rc.thing = display1 ();
- notify ();
- }
+ return display1 ();
}
- };
+ });
- EmacsService.syncRunnable (runnable);
- return rc.thing;
+ return EmacsService.<Boolean>syncRunnable (task);
}