summaryrefslogtreecommitdiffstats
path: root/tools/layoutlib/bridge/src/android/graphics
diff options
context:
space:
mode:
authorDeepanshu Gupta <deepanshu@google.com>2014-10-20 11:07:38 -0700
committerDeepanshu Gupta <deepanshu@google.com>2014-10-20 11:12:53 -0700
commitb69ec7708b61535355d278ac0ea8f9a61540d1fb (patch)
treeee8a7843b5c05e75d5b02116cd8173336584930b /tools/layoutlib/bridge/src/android/graphics
parent908a4f9a4372a9627e821b5800936095b0f0b5b0 (diff)
downloadframeworks_base-b69ec7708b61535355d278ac0ea8f9a61540d1fb.zip
frameworks_base-b69ec7708b61535355d278ac0ea8f9a61540d1fb.tar.gz
frameworks_base-b69ec7708b61535355d278ac0ea8f9a61540d1fb.tar.bz2
Check Bridge init before disposing.
In some cases ADT may dispose the Bridge even before init is called on it. This caused an NPE. Fixed this by checking for the initialization before disposing resources. Bug: http://b.android.com/77726 Change-Id: I741d6ea3595a3b7cb816abd0417f23aecca6370e
Diffstat (limited to 'tools/layoutlib/bridge/src/android/graphics')
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/FontFamily_Delegate.java4
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Typeface_Accessor.java27
-rw-r--r--tools/layoutlib/bridge/src/android/graphics/Typeface_Delegate.java23
3 files changed, 20 insertions, 34 deletions
diff --git a/tools/layoutlib/bridge/src/android/graphics/FontFamily_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/FontFamily_Delegate.java
index bef5181..4993262 100644
--- a/tools/layoutlib/bridge/src/android/graphics/FontFamily_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/FontFamily_Delegate.java
@@ -213,6 +213,10 @@ public class FontFamily_Delegate {
return null;
}
+ @Nullable
+ /*package*/ static String getFontLocation() {
+ return sFontLocation;
+ }
// ---- native methods ----
diff --git a/tools/layoutlib/bridge/src/android/graphics/Typeface_Accessor.java b/tools/layoutlib/bridge/src/android/graphics/Typeface_Accessor.java
deleted file mode 100644
index adad2ac..0000000
--- a/tools/layoutlib/bridge/src/android/graphics/Typeface_Accessor.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.graphics;
-
-/**
- * Class allowing access to package-protected methods/fields.
- */
-public class Typeface_Accessor {
-
- public static void resetDefaults() {
- Typeface.sDefaults = null;
- }
-}
diff --git a/tools/layoutlib/bridge/src/android/graphics/Typeface_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/Typeface_Delegate.java
index 276e134..b9460b4 100644
--- a/tools/layoutlib/bridge/src/android/graphics/Typeface_Delegate.java
+++ b/tools/layoutlib/bridge/src/android/graphics/Typeface_Delegate.java
@@ -27,6 +27,8 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
+import static android.graphics.FontFamily_Delegate.getFontLocation;
+
/**
* Delegate implementing the native methods of android.graphics.Typeface
*
@@ -48,8 +50,6 @@ public final class Typeface_Delegate {
private static final DelegateManager<Typeface_Delegate> sManager =
new DelegateManager<Typeface_Delegate>(Typeface_Delegate.class);
- // ---- delegate helper data ----
- private static String sFontLocation;
// ---- delegate data ----
@@ -61,11 +61,8 @@ public final class Typeface_Delegate {
private static long sDefaultTypeface;
+
// ---- Public Helper methods ----
- public static synchronized void setFontLocation(String fontLocation) {
- sFontLocation = fontLocation;
- FontFamily_Delegate.setFontLocation(fontLocation);
- }
public static Typeface_Delegate getDelegate(long nativeTypeface) {
return sManager.getDelegate(nativeTypeface);
@@ -131,6 +128,18 @@ public final class Typeface_Delegate {
return fonts;
}
+ /**
+ * Clear the default typefaces when disposing bridge.
+ */
+ public static void resetDefaults() {
+ // Sometimes this is called before the Bridge is initialized. In that case, we don't want to
+ // initialize Typeface because the SDK fonts location hasn't been set.
+ if (FontFamily_Delegate.getFontLocation() != null) {
+ Typeface.sDefaults = null;
+ }
+ }
+
+
// ---- native methods ----
@LayoutlibDelegate
@@ -193,7 +202,7 @@ public final class Typeface_Delegate {
@LayoutlibDelegate
/*package*/ static File getSystemFontConfigLocation() {
- return new File(sFontLocation);
+ return new File(getFontLocation());
}
// ---- Private delegate/helper methods ----