summaryrefslogtreecommitdiffstats
path: root/core/java/android/os/Looper.java
diff options
context:
space:
mode:
authorSimon Wilson <simonwilson@google.com>2011-03-02 18:13:49 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2011-03-02 18:13:49 -0800
commitdf58a1bbf8d7f6608848eae4d5d48dcff137dc8c (patch)
treee20d1cf17c727d8bbdaaeda0099c641d89313d9b /core/java/android/os/Looper.java
parent093430fd5dbbdc6f5e0de6f25f6f9bb381cdd239 (diff)
parent3d79f1ce84ee60dbb26468b9e5f75f4ccb5ed8aa (diff)
downloadframeworks_base-df58a1bbf8d7f6608848eae4d5d48dcff137dc8c.zip
frameworks_base-df58a1bbf8d7f6608848eae4d5d48dcff137dc8c.tar.gz
frameworks_base-df58a1bbf8d7f6608848eae4d5d48dcff137dc8c.tar.bz2
am 3d79f1ce: am edc68a00: Merge "Attempt to reduce problems from issue #3183612" into gingerbread
* commit '3d79f1ce84ee60dbb26468b9e5f75f4ccb5ed8aa': Attempt to reduce problems from issue #3183612
Diffstat (limited to 'core/java/android/os/Looper.java')
-rw-r--r--core/java/android/os/Looper.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/core/java/android/os/Looper.java b/core/java/android/os/Looper.java
index 898c642..8204e3c 100644
--- a/core/java/android/os/Looper.java
+++ b/core/java/android/os/Looper.java
@@ -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();
}
}