summaryrefslogtreecommitdiffstats
path: root/core/java/com/android/internal/widget/TransportControlView.java
diff options
context:
space:
mode:
authorJim Miller <jaggies@google.com>2011-10-19 17:36:51 -0700
committerJim Miller <jaggies@google.com>2011-10-19 18:07:58 -0700
commita5ff5b482ab74b327983652439bea58c0499bae0 (patch)
treed187f58f802709f1f533d1288582528293991d0d /core/java/com/android/internal/widget/TransportControlView.java
parentb3cdadb639027f62c7c1637ca962a70d2d1f3b4d (diff)
downloadframeworks_base-a5ff5b482ab74b327983652439bea58c0499bae0.zip
frameworks_base-a5ff5b482ab74b327983652439bea58c0499bae0.tar.gz
frameworks_base-a5ff5b482ab74b327983652439bea58c0499bae0.tar.bz2
Fix 5485925: Fix crash in transport control view
This fixes a crash where we weren't hiding the view when there's no registered media player. It now hides the view when AudioManager tells it to clear the data. It also avoids a possible race condition where a request can come in from AudioManager before the callback is set. Change-Id: I3360e775c75396e1eee11413d317df5b39ceb487
Diffstat (limited to 'core/java/com/android/internal/widget/TransportControlView.java')
-rw-r--r--core/java/com/android/internal/widget/TransportControlView.java19
1 files changed, 11 insertions, 8 deletions
diff --git a/core/java/com/android/internal/widget/TransportControlView.java b/core/java/com/android/internal/widget/TransportControlView.java
index 63a3aa5..979eb81 100644
--- a/core/java/com/android/internal/widget/TransportControlView.java
+++ b/core/java/com/android/internal/widget/TransportControlView.java
@@ -86,11 +86,6 @@ public class TransportControlView extends FrameLayout implements OnClickListener
*/
private Bundle mPopulateMetadataWhenAttached = null;
- /**
- * Whether to clear the interface next time it is shown (i.e. the generation id changed)
- */
- private boolean mClearOnNextShow;
-
// This handler is required to ensure messages from IRCD are handled in sequence and on
// the UI thread.
private Handler mHandler = new Handler() {
@@ -121,7 +116,10 @@ public class TransportControlView extends FrameLayout implements OnClickListener
case MSG_SET_GENERATION_ID:
if (msg.arg2 != 0) {
- mClearOnNextShow = true; // TODO: handle this
+ // This means nobody is currently registered. Hide the view.
+ if (mWidgetCallbacks != null) {
+ mWidgetCallbacks.requestHide(TransportControlView.this);
+ }
}
if (DEBUG) Log.v(TAG, "New genId = " + msg.arg1 + ", clearing = " + msg.arg2);
mClientGeneration = msg.arg1;
@@ -412,7 +410,7 @@ public class TransportControlView extends FrameLayout implements OnClickListener
if (DEBUG) Log.v(TAG, "onSaveInstanceState()");
Parcelable superState = super.onSaveInstanceState();
SavedState ss = new SavedState(superState);
- ss.wasShowing = mWidgetCallbacks.isVisible(this);
+ ss.wasShowing = mWidgetCallbacks != null && mWidgetCallbacks.isVisible(this);
return ss;
}
@@ -425,7 +423,7 @@ public class TransportControlView extends FrameLayout implements OnClickListener
}
SavedState ss = (SavedState) state;
super.onRestoreInstanceState(ss.getSuperState());
- if (ss.wasShowing) {
+ if (ss.wasShowing && mWidgetCallbacks != null) {
mWidgetCallbacks.requestShow(this);
}
}
@@ -449,6 +447,11 @@ public class TransportControlView extends FrameLayout implements OnClickListener
}
private void sendMediaButtonClick(int keyCode) {
+ if (mClientIntent == null) {
+ // Shouldn't be possible because this view should be hidden in this case.
+ Log.e(TAG, "sendMediaButtonClick(): No client is currently registered");
+ return;
+ }
// use the registered PendingIntent that will be processed by the registered
// media button event receiver, which is the component of mClientIntent
KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);