am 3d79f1ce: am edc68a00: Merge "Attempt to reduce problems from issue #3183612" into gingerbread

* commit '3d79f1ce84ee60dbb26468b9e5f75f4ccb5ed8aa':
  Attempt to reduce problems from issue #3183612
This commit is contained in:
Simon Wilson
2011-03-02 18:13:49 -08:00
committed by Android Git Automerger

View File

@@ -112,6 +112,12 @@ public class Looper {
throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread.");
}
MessageQueue queue = me.mQueue;
// Make sure the identity of this thread is that of the local process,
// and keep track of what that identity token actually is.
Binder.clearCallingIdentity();
final long ident = Binder.clearCallingIdentity();
while (true) {
Message msg = queue.next(); // might block
if (msg != null) {
@@ -127,6 +133,17 @@ public class Looper {
if (me.mLogging != null) me.mLogging.println(
"<<<<< Finished to " + msg.target + " "
+ msg.callback);
// Make sure that during the course of dispatching the
// identity of the thread wasn't corrupted.
final long newIdent = Binder.clearCallingIdentity();
if (ident != newIdent) {
Log.wtf("Looper", "Thread identity changed from 0x"
+ Long.toHexString(ident) + " to 0x"
+ Long.toHexString(newIdent) + " while dispatching to "
+ msg.target + " " + msg.callback + " what=" + msg.what);
}
msg.recycle();
}
}