summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Birg <roman@cyngn.com>2015-10-19 11:38:18 -0700
committerRoman Birg <roman@cyngn.com>2016-01-27 14:09:21 -0800
commitfdbad83415498d8e7126104bf365948452a5aadb (patch)
treed959b958ee69d6c11b89fa1ff471bca3ecf35a65
parentb4c3428e06a8a2e3b3bb4f055b5829b233fea499 (diff)
downloadframeworks_base-fdbad83415498d8e7126104bf365948452a5aadb.zip
frameworks_base-fdbad83415498d8e7126104bf365948452a5aadb.tar.gz
frameworks_base-fdbad83415498d8e7126104bf365948452a5aadb.tar.bz2
Wifi tile: don't set items visible from non-ui thread
This can lead to the items disappearing sometimes. Ref: CYNGNOS-1241 CYNGNOS-1644 Change-Id: Iea3e0467b56ae17f266c99b02866f8981b5007d7 Signed-off-by: Roman Birg <roman@cyngn.com>
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java19
1 files changed, 16 insertions, 3 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
index b25390e..abc9acd 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
@@ -20,6 +20,7 @@ package com.android.systemui.qs.tiles;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.os.Looper;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
@@ -131,16 +132,28 @@ public class WifiTile extends QSTile<QSTile.SignalState> {
protected void handleUpdateState(SignalState state, Object arg) {
state.visible = true;
if (DEBUG) Log.d(TAG, "handleUpdateState arg=" + arg);
- CallbackInfo cb = (CallbackInfo) arg;
- if (cb == null) {
+ final CallbackInfo cb;
+ if (arg == null) {
cb = mSignalCallback.mInfo;
+ } else {
+ cb = (CallbackInfo) arg;
}
boolean wifiConnected = cb.enabled && (cb.wifiSignalIconId > 0) && (cb.enabledDesc != null);
boolean wifiNotConnected = (cb.wifiSignalIconId > 0) && (cb.enabledDesc == null);
boolean enabledChanging = state.enabled != cb.enabled;
if (enabledChanging) {
- mDetailAdapter.setItemsVisible(cb.enabled);
+ if (Looper.myLooper() == Looper.getMainLooper()) {
+ // on main thread, bypass the handler
+ mDetailAdapter.setItemsVisible(cb.enabled);
+ } else {
+ mUiHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ mDetailAdapter.setItemsVisible(cb.enabled);
+ }
+ });
+ }
fireToggleStateChanged(cb.enabled);
}
state.enabled = cb.enabled;