From 181453285c67783ebf8eb269dc19fdb0e563af62 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Sat, 20 May 2023 10:26:28 +0800 Subject: [PATCH] Update Android port * java/org/gnu/emacs/EmacsView.java (swapBuffers): Restore missing damage rect code. (onDetachedFromWindow): Remove redundant synchronization. --- java/org/gnu/emacs/EmacsView.java | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/java/org/gnu/emacs/EmacsView.java b/java/org/gnu/emacs/EmacsView.java index 10c1af9e19a..124ea5301bb 100644 --- a/java/org/gnu/emacs/EmacsView.java +++ b/java/org/gnu/emacs/EmacsView.java @@ -356,16 +356,23 @@ public final class EmacsView extends ViewGroup damageRect = null; + /* Now see if there is a damage region. */ + synchronized (damageRegion) { if (damageRegion.isEmpty ()) return; + /* And extract and clear the damage region. */ + + damageRect = damageRegion.getBounds (); + damageRegion.setEmpty (); + bitmap = getBitmap (); /* Transfer the bitmap to the surface view, then invalidate it. */ - surfaceView.setBitmap (bitmap, damageRect); + surfaceView.setBitmap (bitmap, damageRect); } } @@ -545,20 +552,17 @@ public final class EmacsView extends ViewGroup { isAttachedToWindow = false; - synchronized (this) - { - /* Recycle the bitmap and call GC. */ + /* Recycle the bitmap and call GC. */ - if (bitmap != null) - bitmap.recycle (); + if (bitmap != null) + bitmap.recycle (); - bitmap = null; - canvas = null; - surfaceView.setBitmap (null, null); + bitmap = null; + canvas = null; + surfaceView.setBitmap (null, null); - /* Collect the bitmap storage; it could be large. */ - Runtime.getRuntime ().gc (); - } + /* Collect the bitmap storage; it could be large. */ + Runtime.getRuntime ().gc (); super.onDetachedFromWindow (); } -- 2.39.2