From 2f36fc1b4f78aa27f4f484fbd09fcabacee36504 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Mon, 6 May 2024 12:09:21 +0800 Subject: Optimize stipples on Android * java/org/gnu/emacs/EmacsGC.java (EmacsGC) : Change type to EmacsTileObject. (markDirty): Create an EmacsTileObject rather than a BitmapDrawable. * java/org/gnu/emacs/EmacsTileObject.java: New file, significantly leaner than BitmapDrawable. --- java/org/gnu/emacs/EmacsGC.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) (limited to 'java/org/gnu/emacs/EmacsGC.java') diff --git a/java/org/gnu/emacs/EmacsGC.java b/java/org/gnu/emacs/EmacsGC.java index f956b230f8c..d400c23e067 100644 --- a/java/org/gnu/emacs/EmacsGC.java +++ b/java/org/gnu/emacs/EmacsGC.java @@ -29,8 +29,6 @@ import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffColorFilter; import android.graphics.Shader.TileMode; -import android.graphics.drawable.BitmapDrawable; - import android.os.Build; /* X like graphics context structures. Keep the enums in synch with @@ -58,7 +56,7 @@ public final class EmacsGC extends EmacsHandleObject public Paint gcPaint; /* Drawable object for rendering the stiple bitmap. */ - public BitmapDrawable tileObject; + public EmacsTileObject tileObject; /* ID incremented every time the clipping rectangles of any GC changes. */ @@ -132,11 +130,9 @@ public final class EmacsGC extends EmacsHandleObject /* Allocate a new tile object if none is already present or it cannot be reconfigured. */ - if ((tileObject == null) - || (Build.VERSION.SDK_INT < Build.VERSION_CODES.S)) + if (tileObject == null) { - tileObject = new BitmapDrawable (EmacsService.resources, - stippleBitmap); + tileObject = new EmacsTileObject (stippleBitmap); tileObject.setTileModeXY (TileMode.REPEAT, TileMode.REPEAT); } else @@ -144,11 +140,8 @@ public final class EmacsGC extends EmacsHandleObject bitmap. */ tileObject.setBitmap (stippleBitmap); } - else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S - && tileObject != null) - tileObject.setBitmap (null); else if (tileObject != null) - tileObject = null; + tileObject.setBitmap (null); } /* Prepare the tile object to draw a stippled image onto a section of -- cgit v1.3