Temporary debug to figure out who's calling start twice
Bug: 27324401
Change-Id: Ie723ebc0554e0a563aa9e92113d67252bc6aca2f
diff --git a/media/libmedia/IMediaSource.cpp b/media/libmedia/IMediaSource.cpp
index b988c46..6cfbeaa 100644
--- a/media/libmedia/IMediaSource.cpp
+++ b/media/libmedia/IMediaSource.cpp
@@ -18,6 +18,8 @@
#define LOG_TAG "BpMediaSource"
#include <utils/Log.h>
+#include <utils/CallStack.h>
+
#include <inttypes.h>
#include <stdint.h>
#include <sys/types.h>
@@ -109,9 +111,16 @@
BpMediaSource(const sp<IBinder>& impl)
: BpInterface<IMediaSource>(impl)
{
+ mStarted = false;
}
virtual status_t start(MetaData *params) {
+ if (mStarted) {
+ ALOGD("Source was started previously from:");
+ mStartStack.log(LOG_TAG);
+ ALOGD("Now from:");
+ CallStack stack(LOG_TAG);
+ }
ALOGV("start");
Parcel data, reply;
data.writeInterfaceToken(BpMediaSource::getInterfaceDescriptor());
@@ -119,6 +128,10 @@
params->writeToParcel(data);
}
status_t ret = remote()->transact(START, data, &reply);
+ if (ret == NO_ERROR) {
+ mStarted = true;
+ mStartStack.update();
+ }
if (ret == NO_ERROR && params) {
ALOGW("ignoring potentially modified MetaData from start");
ALOGW("input:");
@@ -131,6 +144,7 @@
}
virtual status_t stop() {
+ mStarted = false;
ALOGV("stop");
Parcel data, reply;
data.writeInterfaceToken(BpMediaSource::getInterfaceDescriptor());
@@ -205,7 +219,8 @@
// NuPlayer passes pointers-to-metadata around, so we use this to keep the metadata alive
// XXX: could we use this for caching, or does metadata change on the fly?
sp<MetaData> mMetaData;
-
+ bool mStarted;
+ CallStack mStartStack;
};
IMPLEMENT_META_INTERFACE(MediaSource, "android.media.IMediaSource");