summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/screenshot
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2013-04-01 16:04:28 -0700
committerWinson Chung <winsonc@google.com>2013-04-01 16:04:28 -0700
commit3a5a774954d28911bbf9eaa7dfd8329a085fbdc5 (patch)
tree426144bd75eb4e8960d829885711288e9579abb9 /packages/SystemUI/src/com/android/systemui/screenshot
parent73882cf489b44cfd393701c0629bb2d3613857d1 (diff)
downloadframeworks_base-3a5a774954d28911bbf9eaa7dfd8329a085fbdc5.zip
frameworks_base-3a5a774954d28911bbf9eaa7dfd8329a085fbdc5.tar.gz
frameworks_base-3a5a774954d28911bbf9eaa7dfd8329a085fbdc5.tar.bz2
Fixing NPE on screenshot error. (Bug 8328886)
Change-Id: Id47b8429c512c02e63d86de2ce37bd8e3ee02359
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/screenshot')
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java31
-rw-r--r--packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java3
2 files changed, 6 insertions, 28 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index b498368..5041617 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -76,11 +76,13 @@ class SaveImageInBackgroundData {
int result;
void clearImage() {
- context = null;
image = null;
imageUri = null;
iconSize = 0;
}
+ void clearContext() {
+ context = null;
+ }
}
/**
@@ -172,8 +174,6 @@ class SaveImageInBackgroundTask extends AsyncTask<SaveImageInBackgroundData, Voi
mNotificationBuilder.setLargeIcon(croppedIcon);
// But we still don't set it for the expanded view, allowing the smallIcon to show here.
mNotificationStyle.bigLargeIcon(null);
-
- Log.d(TAG, "SaveImageInBackgroundTask constructor");
}
@Override
@@ -181,7 +181,7 @@ class SaveImageInBackgroundTask extends AsyncTask<SaveImageInBackgroundData, Voi
if (params.length != 1) return null;
if (isCancelled()) {
params[0].clearImage();
- Log.d(TAG, "doInBackground cancelled");
+ params[0].clearContext();
return null;
}
@@ -246,7 +246,6 @@ class SaveImageInBackgroundTask extends AsyncTask<SaveImageInBackgroundData, Voi
// mounted
params[0].clearImage();
params[0].result = 1;
- Log.d(TAG, "doInBackground failed");
}
// Recycle the bitmap data
@@ -254,7 +253,6 @@ class SaveImageInBackgroundTask extends AsyncTask<SaveImageInBackgroundData, Voi
image.recycle();
}
- Log.d(TAG, "doInBackground complete");
return params[0];
}
@@ -263,7 +261,7 @@ class SaveImageInBackgroundTask extends AsyncTask<SaveImageInBackgroundData, Voi
if (isCancelled()) {
params.finisher.run();
params.clearImage();
- Log.d(TAG, "onPostExecute cancelled");
+ params.clearContext();
return;
}
@@ -291,7 +289,7 @@ class SaveImageInBackgroundTask extends AsyncTask<SaveImageInBackgroundData, Voi
mNotificationManager.notify(mNotificationId, n);
}
params.finisher.run();
- Log.d(TAG, "onPostExecute complete");
+ params.clearContext();
}
}
@@ -395,15 +393,12 @@ class GlobalScreenshot {
// Setup the Camera shutter sound
mCameraSound = new MediaActionSound();
mCameraSound.load(MediaActionSound.SHUTTER_CLICK);
-
- Log.d(TAG, "GlobalScreenshot constructor");
}
/**
* Creates a new worker thread and saves the screenshot to the media store.
*/
private void saveScreenshotInWorkerThread(Runnable finisher) {
- Log.d(TAG, "saveScreenshotInWorkerThread");
SaveImageInBackgroundData data = new SaveImageInBackgroundData();
data.context = mContext;
data.image = mScreenBitmap;
@@ -411,7 +406,6 @@ class GlobalScreenshot {
data.finisher = finisher;
if (mSaveInBgTask != null) {
mSaveInBgTask.cancel(false);
- Log.d(TAG, "saveScreenshotInWorkerThread cancel");
}
mSaveInBgTask = new SaveImageInBackgroundTask(mContext, data, mNotificationManager,
SCREENSHOT_NOTIFICATION_ID).execute(data);
@@ -436,8 +430,6 @@ class GlobalScreenshot {
* Takes a screenshot of the current display and shows an animation.
*/
void takeScreenshot(Runnable finisher, boolean statusBarVisible, boolean navBarVisible) {
- Log.d(TAG, "takeScreenshot");
-
// We need to orient the screenshot correctly (and the Surface api seems to take screenshots
// only in the natural orientation of the device :!)
mDisplay.getRealMetrics(mDisplayMetrics);
@@ -451,8 +443,6 @@ class GlobalScreenshot {
mDisplayMatrix.mapPoints(dims);
dims[0] = Math.abs(dims[0]);
dims[1] = Math.abs(dims[1]);
-
- Log.d(TAG, "takeScreenshot requiresRotation");
}
// Take the screenshot
@@ -460,7 +450,6 @@ class GlobalScreenshot {
if (mScreenBitmap == null) {
notifyScreenshotError(mContext, mNotificationManager);
finisher.run();
- Log.d(TAG, "takeScreenshot null bitmap");
return;
}
@@ -477,7 +466,6 @@ class GlobalScreenshot {
// Recycle the previous bitmap
mScreenBitmap.recycle();
mScreenBitmap = ss;
- Log.d(TAG, "takeScreenshot rotation bitmap created");
}
// Optimizations
@@ -487,7 +475,6 @@ class GlobalScreenshot {
// Start the post-screenshot animation
startAnimation(finisher, mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels,
statusBarVisible, navBarVisible);
- Log.d(TAG, "takeScreenshot startedAnimation");
}
@@ -496,7 +483,6 @@ class GlobalScreenshot {
*/
private void startAnimation(final Runnable finisher, int w, int h, boolean statusBarVisible,
boolean navBarVisible) {
- Log.d(TAG, "startAnimation");
// Add the view for the animation
mScreenshotView.setImageBitmap(mScreenBitmap);
mScreenshotLayout.requestFocus();
@@ -505,11 +491,9 @@ class GlobalScreenshot {
if (mScreenshotAnimation != null) {
mScreenshotAnimation.end();
mScreenshotAnimation.removeAllListeners();
- Log.d(TAG, "startAnimation reset previous animations");
}
mWindowManager.addView(mScreenshotLayout, mWindowLayoutParams);
- Log.d(TAG, "startAnimation layout added to WM");
ValueAnimator screenshotDropInAnim = createScreenshotDropInAnimation();
ValueAnimator screenshotFadeOutAnim = createScreenshotDropOutAnimation(w, h,
statusBarVisible, navBarVisible);
@@ -525,7 +509,6 @@ class GlobalScreenshot {
// Clear any references to the bitmap
mScreenBitmap = null;
mScreenshotView.setImageBitmap(null);
- Log.d(TAG, "startAnimation onAnimationEnd");
}
});
mScreenshotLayout.post(new Runnable() {
@@ -537,7 +520,6 @@ class GlobalScreenshot {
mScreenshotView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
mScreenshotView.buildLayer();
mScreenshotAnimation.start();
- Log.d(TAG, "startAnimation post runnable");
}
});
}
@@ -675,7 +657,6 @@ class GlobalScreenshot {
}
static void notifyScreenshotError(Context context, NotificationManager nManager) {
- Log.d(TAG, "notifyScreenshotError");
Resources r = context.getResources();
// Clear all existing notification, compose the new notification and show it
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
index 1954af8..6a0fe47 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java
@@ -38,15 +38,12 @@ public class TakeScreenshotService extends Service {
final Messenger callback = msg.replyTo;
if (mScreenshot == null) {
mScreenshot = new GlobalScreenshot(TakeScreenshotService.this);
- Log.d(TAG, "Global screenshot initialized");
}
- Log.d(TAG, "Global screenshot captured");
mScreenshot.takeScreenshot(new Runnable() {
@Override public void run() {
Message reply = Message.obtain(null, 1);
try {
callback.send(reply);
- Log.d(TAG, "Global screenshot completed");
} catch (RemoteException e) {
}
}