From 44fa7cbf7e3f7c3a33ae0c9671a308659c8fd8e6 Mon Sep 17 00:00:00 2001 From: Seigo Nonaka Date: Thu, 11 Feb 2021 14:53:37 -0800 Subject: [PATCH] Register native allocation for Font In the ag/13482285, accidentally removed font native allocation. The native bound instance should be unref-ed when the Java font object is GC-ed. Bug: 179942558 Test: N/A Change-Id: I19312844856f19a2e3abf717a7563a0812c9266d --- graphics/java/android/graphics/fonts/Font.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/graphics/java/android/graphics/fonts/Font.java b/graphics/java/android/graphics/fonts/Font.java index b153c995a7f44..7b67ca919a0f9 100644 --- a/graphics/java/android/graphics/fonts/Font.java +++ b/graphics/java/android/graphics/fonts/Font.java @@ -63,6 +63,10 @@ public final class Font { NativeAllocationRegistry.createMalloced( ByteBuffer.class.getClassLoader(), nGetReleaseNativeFont()); + private static final NativeAllocationRegistry FONT_REGISTRY = + NativeAllocationRegistry.createMalloced(Font.class.getClassLoader(), + nGetReleaseNativeFont()); + private static final Object SOURCE_ID_LOCK = new Object(); @GuardedBy("SOURCE_ID_LOCK") private static final LongSparseLongArray FONT_SOURCE_ID_MAP = @@ -526,11 +530,14 @@ public final class Font { * Use Builder instead * * Caller must increment underlying minikin::Font ref count. + * This class takes the ownership of the passing native objects. * * @hide */ public Font(long nativePtr) { mNativePtr = nativePtr; + + FONT_REGISTRY.registerNativeAllocation(this, mNativePtr); } /**