summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsView.java
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2024-04-01 18:50:20 +0800
committerSean Whitton <spwhitton@spwhitton.name>2024-04-01 18:50:20 +0800
commit0fef2018445b257bf26814e6659bc2ff5b270d77 (patch)
tree2310ce1fd8781a6203ec56e2f985f6adfcc2278d /java/org/gnu/emacs/EmacsView.java
parent3a8546615a38337dc991f6546ade63a372edc2ca (diff)
parent49f76dcc17055e60569b6096e8ea3c9961ebbf63 (diff)
downloademacs-0fef2018445b257bf26814e6659bc2ff5b270d77.tar.gz
Merge branch 'athena/unstable' into athena/bookworm-backports
Diffstat (limited to 'java/org/gnu/emacs/EmacsView.java')
-rw-r--r--java/org/gnu/emacs/EmacsView.java33
1 files changed, 20 insertions, 13 deletions
diff --git a/java/org/gnu/emacs/EmacsView.java b/java/org/gnu/emacs/EmacsView.java
index 136d8abc713..109208b2518 100644
--- a/java/org/gnu/emacs/EmacsView.java
+++ b/java/org/gnu/emacs/EmacsView.java
@@ -456,7 +456,6 @@ public final class EmacsView extends ViewGroup
{
Canvas canvas;
Rect damageRect;
- Bitmap bitmap;
/* Make sure this function is called only from the Emacs
thread. */
@@ -474,11 +473,12 @@ public final class EmacsView extends ViewGroup
damageRect = damageRegion.getBounds ();
damageRegion.setEmpty ();
- bitmap = getBitmap ();
-
- /* Transfer the bitmap to the surface view, then invalidate
- it. */
- surfaceView.setBitmap (bitmap, damageRect);
+ synchronized (this)
+ {
+ /* Transfer the bitmap to the surface view, then invalidate
+ it. */
+ surfaceView.setBitmap (bitmap, damageRect);
+ }
}
@Override
@@ -724,17 +724,20 @@ public final class EmacsView extends ViewGroup
public synchronized void
onDetachedFromWindow ()
{
- isAttachedToWindow = false;
-
- /* Recycle the bitmap and call GC. */
-
- if (bitmap != null)
- bitmap.recycle ();
+ Bitmap savedBitmap;
+ savedBitmap = bitmap;
+ isAttachedToWindow = false;
bitmap = null;
canvas = null;
+
surfaceView.setBitmap (null, null);
+ /* Recycle the bitmap and call GC. */
+
+ if (savedBitmap != null)
+ savedBitmap.recycle ();
+
/* Collect the bitmap storage; it could be large. */
Runtime.getRuntime ().gc ();
@@ -835,9 +838,13 @@ public final class EmacsView extends ViewGroup
EmacsNative.requestSelectionUpdate (window.handle);
}
- if (mode == EmacsService.IC_MODE_ACTION)
+ if (mode == EmacsService.IC_MODE_ACTION
+ || mode == EmacsService.IC_MODE_PASSWORD)
info.imeOptions |= EditorInfo.IME_ACTION_DONE;
+ if (mode == EmacsService.IC_MODE_PASSWORD)
+ info.inputType |= InputType.TYPE_TEXT_VARIATION_PASSWORD;
+
/* Set the initial selection fields. */
info.initialSelStart = selection[0];
info.initialSelEnd = selection[1];