Merge "Fix 4027057: Improve resolution of RecentApps thumbnail images." into honeycomb-mr1
This commit is contained in:
@@ -513,9 +513,7 @@ public class RecentAppsPanel extends RelativeLayout implements StatusBarPanel, O
|
||||
paint.setFilterBitmap(true);
|
||||
paint.setAlpha(255);
|
||||
final int srcWidth = thumbnail.getWidth();
|
||||
final int height = thumbnail.getHeight();
|
||||
final int srcHeight = srcWidth > height ? height
|
||||
: (height - height * srcWidth / height);
|
||||
final int srcHeight = thumbnail.getHeight();
|
||||
canvas.drawBitmap(thumbnail,
|
||||
new Rect(0, 0, srcWidth-1, srcHeight-1),
|
||||
new RectF(GLOW_PADDING,
|
||||
|
||||
@@ -4727,7 +4727,15 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
SystemProperties.set(StrictMode.VISUAL_PROPERTY, value);
|
||||
}
|
||||
|
||||
public Bitmap screenshotApplications(IBinder appToken, int maxWidth, int maxHeight) {
|
||||
/**
|
||||
* Takes a snapshot of the screen. In landscape mode this grabs the whole screen.
|
||||
* In portrait mode, it grabs the upper region of the screen based on the vertical dimension
|
||||
* of the target image.
|
||||
*
|
||||
* @param width the width of the target bitmap
|
||||
* @param height the height of the target bitmap
|
||||
*/
|
||||
public Bitmap screenshotApplications(IBinder appToken, int width, int height) {
|
||||
if (!checkCallingPermission(android.Manifest.permission.READ_FRAME_BUFFER,
|
||||
"screenshotApplications()")) {
|
||||
throw new SecurityException("Requires READ_FRAME_BUFFER permission");
|
||||
@@ -4739,7 +4747,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
final Rect frame = new Rect();
|
||||
|
||||
float scale;
|
||||
int sw, sh, dw, dh;
|
||||
int dw, dh;
|
||||
int rot;
|
||||
|
||||
synchronized(mWindowMap) {
|
||||
@@ -4807,7 +4815,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
|
||||
// Constrain frame to the screen size.
|
||||
frame.intersect(0, 0, dw, dh);
|
||||
|
||||
|
||||
if (frame.isEmpty() || maxLayer == 0) {
|
||||
return null;
|
||||
}
|
||||
@@ -4818,15 +4826,7 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
int fh = frame.height();
|
||||
|
||||
// First try reducing to fit in x dimension.
|
||||
scale = maxWidth/(float)fw;
|
||||
sw = maxWidth;
|
||||
sh = (int)(fh*scale);
|
||||
if (sh > maxHeight) {
|
||||
// y dimension became too long; constrain by that.
|
||||
scale = maxHeight/(float)fh;
|
||||
sw = (int)(fw*scale);
|
||||
sh = maxHeight;
|
||||
}
|
||||
scale = width/(float)fw;
|
||||
|
||||
// The screen shot will contain the entire screen.
|
||||
dw = (int)(dw*scale);
|
||||
@@ -4845,8 +4845,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
+ ") to layer " + maxLayer);
|
||||
return null;
|
||||
}
|
||||
|
||||
Bitmap bm = Bitmap.createBitmap(sw, sh, rawss.getConfig());
|
||||
|
||||
Bitmap bm = Bitmap.createBitmap(width, height, rawss.getConfig());
|
||||
Matrix matrix = new Matrix();
|
||||
ScreenRotationAnimation.createRotationMatrix(rot, dw, dh, matrix);
|
||||
matrix.postTranslate(-(int)(frame.left*scale), -(int)(frame.top*scale));
|
||||
|
||||
Reference in New Issue
Block a user