Merge "Preventing the hierarchy viewer from getting stuck, once when trying to load the window data for SurfaceView and the Wallpaper, and in the case the captured node has disappeared." into gingerbread
This commit is contained in:
committed by
Android (Google) Code Review
commit
6947cc5942
@@ -1138,22 +1138,24 @@ public class ViewDebug {
|
||||
|
||||
final View captureView = findView(root, parameter);
|
||||
Bitmap b = performViewCapture(captureView, false);
|
||||
|
||||
if (b != null) {
|
||||
BufferedOutputStream out = null;
|
||||
try {
|
||||
out = new BufferedOutputStream(clientStream, 32 * 1024);
|
||||
b.compress(Bitmap.CompressFormat.PNG, 100, out);
|
||||
out.flush();
|
||||
} finally {
|
||||
if (out != null) {
|
||||
out.close();
|
||||
}
|
||||
b.recycle();
|
||||
}
|
||||
} else {
|
||||
|
||||
if (b == null) {
|
||||
Log.w("View", "Failed to create capture bitmap!");
|
||||
clientStream.close();
|
||||
// Send an empty one so that it doesn't get stuck waiting for
|
||||
// something.
|
||||
b = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
|
||||
}
|
||||
|
||||
BufferedOutputStream out = null;
|
||||
try {
|
||||
out = new BufferedOutputStream(clientStream, 32 * 1024);
|
||||
b.compress(Bitmap.CompressFormat.PNG, 100, out);
|
||||
out.flush();
|
||||
} finally {
|
||||
if (out != null) {
|
||||
out.close();
|
||||
}
|
||||
b.recycle();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4808,6 +4808,8 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
Parcel data = null;
|
||||
Parcel reply = null;
|
||||
|
||||
BufferedWriter out = null;
|
||||
|
||||
// Any uncaught exception will crash the system process
|
||||
try {
|
||||
// Find the hashcode of the window
|
||||
@@ -4845,6 +4847,12 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
|
||||
reply.readException();
|
||||
|
||||
if (!client.isOutputShutdown()) {
|
||||
out = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
|
||||
out.write("DONE\n");
|
||||
out.flush();
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
Slog.w(TAG, "Could not send command " + command + " with parameters " + parameters, e);
|
||||
success = false;
|
||||
@@ -4855,6 +4863,13 @@ public class WindowManagerService extends IWindowManager.Stub
|
||||
if (reply != null) {
|
||||
reply.recycle();
|
||||
}
|
||||
if (out != null) {
|
||||
try {
|
||||
out.close();
|
||||
} catch (IOException e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return success;
|
||||
|
||||
Reference in New Issue
Block a user