diff options
| author | Po Lu <luangruo@yahoo.com> | 2023-12-30 10:57:11 +0800 |
|---|---|---|
| committer | Po Lu <luangruo@yahoo.com> | 2023-12-30 10:57:11 +0800 |
| commit | 94e3d1159334d08fd1d54464bf6173755ba606b7 (patch) | |
| tree | ba28a88365830b45015af5fd8a0051367ae42683 /java/org/gnu/emacs/EmacsDialog.java | |
| parent | fe2b68d405251498518b279a17a87f4cbcf82479 (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.java | 25 |
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); } |
