summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2013-10-22 14:13:16 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-10-22 14:13:16 -0700
commit3a9b311556e967bd9deab6a258218fe4154867c9 (patch)
treec3a6f0355d95d5c29767d9d1df3b1e10a40ab98b /src
parent91c92a7d98c0f6045006a3d88ae9312a9483a5aa (diff)
parent324439040dc66d6d929efe09a1bcba725abb665a (diff)
am 32443904: am 934d3ee3: Fix call log jank
* commit '324439040dc66d6d929efe09a1bcba725abb665a': Fix call log jank
Diffstat (limited to 'src')
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index 9392410d1..e4fd0d897 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -388,7 +388,16 @@ public class CallLogAdapter extends GroupingListAdapter
NumberWithCountryIso numberCountryIso = new NumberWithCountryIso(number, countryIso);
ContactInfo existingInfo = mContactInfoCache.getPossiblyExpired(numberCountryIso);
- boolean updated = !info.equals(existingInfo);
+ final boolean isRemoteSource = info.sourceType != 0;
+
+ // Don't force redraw if existing info in the cache is equal to {@link ContactInfo#EMPTY}
+ // to avoid updating the data set for every new row that is scrolled into view.
+ // see (https://googleplex-android-review.git.corp.google.com/#/c/166680/)
+
+ // Exception: Photo uris for contacts from remote sources are not cached in the call log
+ // cache, so we have to force a redraw for these contacts regardless.
+ boolean updated = (existingInfo != ContactInfo.EMPTY || isRemoteSource) &&
+ !info.equals(existingInfo);
// Store the data in the cache so that the UI thread can use to display it. Store it
// even if it has not changed so that it is marked as not expired.