summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/MediaPlayerService.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libmediaplayerservice/MediaPlayerService.cpp')
-rw-r--r--media/libmediaplayerservice/MediaPlayerService.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 414c262..f238e89 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -1,6 +1,6 @@
/*
**
-** Copyright (c) 2012, The Linux Foundation. All rights reserved.
+** Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
** Not a Contribution, Apache license notifications and license are retained
** for attribution purposes only.
**
@@ -1735,6 +1735,27 @@ void MediaPlayerService::AudioOutput::CallbackWrapper(
data->unlock();
return;
}
+ if (event == AudioTrack::EVENT_HW_FAIL) {
+ ALOGW("Event hardware failure");
+ CallbackData *data = (CallbackData*)cookie;
+ if (data != NULL) {
+ data->lock();
+ AudioOutput *me = data->getOutput();
+ if (me == NULL) {
+ // no output set, likely because the track was
+ // scheduled to be reused
+ // by another player, but the format turned out
+ // to be incompatible.
+ data->unlock();
+ return;
+ }
+ ALOGV("Callback!!!");
+ (*me->mCallback)(me, NULL, (size_t)AudioTrack::EVENT_HW_FAIL,
+ me->mCallbackCookie);
+ data->unlock();
+ }
+ return;
+ }
#endif
if (event == AudioTrack::EVENT_MORE_DATA) {
CallbackData *data = (CallbackData*)cookie;