summaryrefslogtreecommitdiffstats
path: root/core/java/android/os/UserManager.java
diff options
context:
space:
mode:
authorAdrian Roos <roosa@google.com>2015-02-17 15:51:35 +0100
committerAdrian Roos <roosa@google.com>2015-02-17 20:57:23 +0100
commit1bdff9139fd412b36d5d2d783574b6418fcb198a (patch)
treebabd2f99528a26cce0c494fda2dcc7936cac5735 /core/java/android/os/UserManager.java
parent211f8b4d83fab4b4e036ff538bd8c14fbb856b72 (diff)
downloadframeworks_base-1bdff9139fd412b36d5d2d783574b6418fcb198a.zip
frameworks_base-1bdff9139fd412b36d5d2d783574b6418fcb198a.tar.gz
frameworks_base-1bdff9139fd412b36d5d2d783574b6418fcb198a.tar.bz2
Decouple package manager lock and bitmap decoding
Also moves the actual reading and decoding of the icon into the client process to avoid unnecessary copies. Bug: 18474438 Change-Id: I71623ef48c770d752593aa97d69517f6139cc947
Diffstat (limited to 'core/java/android/os/UserManager.java')
-rw-r--r--core/java/android/os/UserManager.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index d124a49..60ab05c 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.provider.Settings;
@@ -30,6 +31,7 @@ import android.view.WindowManager.LayoutParams;
import com.android.internal.R;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -1083,11 +1085,21 @@ public class UserManager {
*/
public Bitmap getUserIcon(int userHandle) {
try {
- return mService.getUserIcon(userHandle);
+ ParcelFileDescriptor fd = mService.getUserIcon(userHandle);
+ if (fd != null) {
+ try {
+ return BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor());
+ } finally {
+ try {
+ fd.close();
+ } catch (IOException e) {
+ }
+ }
+ }
} catch (RemoteException re) {
Log.w(TAG, "Could not get the user icon ", re);
- return null;
}
+ return null;
}
/**