]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid extraneous calls to the UI thread
authorPo Lu <luangruo@yahoo.com>
Sun, 11 Jun 2023 00:52:10 +0000 (08:52 +0800)
committerPo Lu <luangruo@yahoo.com>
Sun, 11 Jun 2023 00:52:10 +0000 (08:52 +0800)
* java/org/gnu/emacs/EmacsView.java (EmacsView)
(showOnScreenKeyboard, hideOnScreenKeyboard)
(onCheckIsTextEditor): Make synchronized.
* java/org/gnu/emacs/EmacsWindow.java (EmacsWindow)
(toggleOnScreenKeyboard): Don't post to the main thread.

java/org/gnu/emacs/EmacsView.java
java/org/gnu/emacs/EmacsWindow.java

index d432162132d912b72da9fd2c4782599124e66d9b..7fd672233f287291a3a66cdad57eb4caf20c6194 100644 (file)
@@ -590,7 +590,7 @@ public final class EmacsView extends ViewGroup
     super.onAttachedToWindow ();
   }
 
-  public void
+  public synchronized void
   showOnScreenKeyboard ()
   {
     /* Specifying no flags at all tells the system the user asked for
@@ -599,7 +599,7 @@ public final class EmacsView extends ViewGroup
     isCurrentlyTextEditor = true;
   }
 
-  public void
+  public synchronized void
   hideOnScreenKeyboard ()
   {
     imManager.hideSoftInputFromWindow (this.getWindowToken (),
@@ -686,7 +686,7 @@ public final class EmacsView extends ViewGroup
   }
 
   @Override
-  public boolean
+  public synchronized boolean
   onCheckIsTextEditor ()
   {
     /* If value is true, then the system will display the on screen
index c14bf16b96edaadedf73727b5aca6e93dcbbd472..f5e40e9a2d9b17447ea0776334a5e65a61bb805a 100644 (file)
@@ -1201,19 +1201,16 @@ public final class EmacsWindow extends EmacsHandleObject
   }
 
   public void
-  toggleOnScreenKeyboard (final boolean on)
+  toggleOnScreenKeyboard (boolean on)
   {
-    EmacsService.SERVICE.runOnUiThread (new Runnable () {
-       @Override
-       public void
-       run ()
-       {
-         if (on)
-           view.showOnScreenKeyboard ();
-         else
-           view.hideOnScreenKeyboard ();
-       }
-      });
+    /* InputMethodManager functions are thread safe.  Call
+       `showOnScreenKeyboard' etc from the Emacs thread in order to
+       keep the calls in sync with updates to the input context.  */
+
+    if (on)
+      view.showOnScreenKeyboard ();
+    else
+      view.hideOnScreenKeyboard ();
   }
 
   public String