summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2013-09-20 18:10:28 +0000
committerGlenn Kasten <gkasten@google.com>2013-09-20 18:10:28 +0000
commitf69cd6787d39188ea7bc41fe7d54314fb18eb214 (patch)
tree4ae522180685ba5de382073a196e41b07ae76986 /core/jni
parent8d87d7ba113ad90685f1d2669e65251a9b422a5a (diff)
downloadframeworks_base-f69cd6787d39188ea7bc41fe7d54314fb18eb214.zip
frameworks_base-f69cd6787d39188ea7bc41fe7d54314fb18eb214.tar.gz
frameworks_base-f69cd6787d39188ea7bc41fe7d54314fb18eb214.tar.bz2
Revert "Workaround for slow AudioRecord destructor"
This reverts commit 8d87d7ba113ad90685f1d2669e65251a9b422a5a. Change-Id: I78cbe73959d29fc0ff3153268503ae685cd0995c
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_media_AudioRecord.cpp23
1 files changed, 0 insertions, 23 deletions
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp
index 3994047..1c43cc5 100644
--- a/core/jni/android_media_AudioRecord.cpp
+++ b/core/jni/android_media_AudioRecord.cpp
@@ -310,18 +310,6 @@ android_media_AudioRecord_stop(JNIEnv *env, jobject thiz)
// ----------------------------------------------------------------------------
-// This class is used to destroy a RefBase asynchronously
-class AsyncDestructThread : public Thread
-{
-public:
- AsyncDestructThread(sp<RefBase> refBase) : mRefBase(refBase) { }
-protected:
- virtual ~AsyncDestructThread() { }
-private:
- virtual bool threadLoop() { return false; }
- const sp<RefBase> mRefBase;
-};
-
#define CALLBACK_COND_WAIT_TIMEOUT_MS 1000
static void android_media_AudioRecord_release(JNIEnv *env, jobject thiz) {
sp<AudioRecord> lpRecorder = setAudioRecord(env, thiz, 0);
@@ -354,17 +342,6 @@ static void android_media_AudioRecord_release(JNIEnv *env, jobject thiz) {
env->DeleteGlobalRef(lpCookie->audioRecord_ref);
delete lpCookie;
}
- // FIXME AudioRecord destruction should not be slow
- if (lpRecorder != 0) {
- // must be a raw reference to avoid a race after run()
- AsyncDestructThread *adt = new AsyncDestructThread(lpRecorder);
- // guaranteed to not run destructor
- lpRecorder.clear();
- // after the run(), adt thread will hold a strong reference to lpRecorder,
- // and the only strong reference to itself
- adt->run("AsyncDestruct");
- // do not delete adt here: adt thread destroys itself, and lpRecorder if needed
- }
}