Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d58bdf9b authored by Sihua Ma's avatar Sihua Ma
Browse files

Upload bitmap to GPU in RemoteViews

Upload the bitmap to GPU when the RemoteView intends to use it.

Test: Manually verified that widget drawing method is accelerated by
approximately 2 micro seconds. The longest drawing time down from 52 micro seconds to 47 micro seconds.
Fix: 226298376

Change-Id: If57f3127dfa0c01550c8388a43a79acac37fcfb7
parent f9a77b96
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -1780,6 +1780,21 @@ public class RemoteViews implements Parcelable, Filter {
            Object value = getParameterValue(view);
            try {
                MethodHandle method = getMethod(view, this.methodName, param, true /* async */);
                // Upload the bitmap to GPU if the parameter is of type Bitmap or Icon.
                // Since bitmaps in framework are seldomly modified, this is supposed to accelerate
                // the operations.
                if (value instanceof Bitmap bitmap) {
                    bitmap.prepareToDraw();
                }

                if (value instanceof Icon icon
                        && (icon.getType() == Icon.TYPE_BITMAP
                                || icon.getType() == Icon.TYPE_ADAPTIVE_BITMAP)) {
                    Bitmap bitmap = icon.getBitmap();
                    if (bitmap != null) {
                        bitmap.prepareToDraw();
                    }
                }

                if (method != null) {
                    Runnable endAction = (Runnable) method.invoke(view, value);