]> git.eshelyaron.com Git - emacs.git/commitdiff
Eliminate some redundant synchronization on Android
authorPo Lu <luangruo@yahoo.com>
Tue, 11 Jun 2024 06:39:40 +0000 (14:39 +0800)
committerEshel Yaron <me@eshelyaron.com>
Wed, 12 Jun 2024 09:27:58 +0000 (11:27 +0200)
* java/org/gnu/emacs/EmacsService.java (resetIC): Return on all
versions of Android if the connection need not be reset.

* java/org/gnu/emacs/EmacsView.java (getICMode, setICMode):
Remove needless synchronization.

(cherry picked from commit 677f082b0feda295e6a710b5dac6040f57cfad8b)

java/org/gnu/emacs/EmacsService.java
java/org/gnu/emacs/EmacsView.java

index 2dcaad16e50b1d52c8e3b04a9449cb4bc08f5669..cfe9e42de4df891fa768374fd24e38ecbe76c2c7 100644 (file)
@@ -899,11 +899,19 @@ public final class EmacsService extends Service
     if (DEBUG_IC)
       Log.d (TAG, "resetIC: " + window + ", " + icMode);
 
-    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU
-       && (oldMode = window.view.getICMode ()) == icMode
-       /* Don't do this if there is currently no input
-          connection.  */
-       && oldMode != IC_MODE_NULL)
+    oldMode = window.view.getICMode ();
+
+    /* If it's not necessary to reset the input connection for ICMODE to
+       take effect, return immediately.  */
+    if (oldMode == IC_MODE_NULL && icMode == IC_MODE_NULL)
+      {
+       if (DEBUG_IC)
+         Log.d (TAG, "resetIC: redundant invocation ignored");
+       return;
+      }
+
+    if (oldMode == icMode
+       && Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
       {
        if (DEBUG_IC)
          Log.d (TAG, "resetIC: calling invalidateInput");
index 244a3a021662a5221248ff9850d3b4634c458fb7..4a505b3c0dc643db8e7852c388e565d3206fc2a7 100644 (file)
@@ -891,13 +891,13 @@ public final class EmacsView extends ViewGroup
     return true;
   }
 
-  public synchronized void
+  public void
   setICMode (int icMode)
   {
     this.icMode = icMode;
   }
 
-  public synchronized int
+  public int
   getICMode ()
   {
     return icMode;