diff --git a/media/jni/audioeffect/Android.bp b/media/jni/audioeffect/Android.bp index 2ddfacf3884a4..8b5b726fd2db7 100644 --- a/media/jni/audioeffect/Android.bp +++ b/media/jni/audioeffect/Android.bp @@ -28,7 +28,7 @@ cc_library_shared { "libaudioclient", "libaudioutils", "libaudiofoundation", - "libbinder" + "libbinder", ], export_shared_lib_headers: [ @@ -42,6 +42,7 @@ cc_library_shared { "-Werror", "-Wunused", "-Wunreachable-code", + "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION", ], // Workaround Clang LTO crash. diff --git a/media/jni/audioeffect/Visualizer.cpp b/media/jni/audioeffect/Visualizer.cpp index d0f1ec6064c1b..09c45ea97e9d3 100644 --- a/media/jni/audioeffect/Visualizer.cpp +++ b/media/jni/audioeffect/Visualizer.cpp @@ -142,7 +142,8 @@ status_t Visualizer::setCaptureCallBack(capture_cbk_t cbk, void* user, uint32_t mCaptureRate = rate; if (cbk != NULL) { - mCaptureThread = new CaptureThread(this, rate, ((flags & CAPTURE_CALL_JAVA) != 0)); + mCaptureThread = sp::make( + sp::fromExisting(this), rate, ((flags & CAPTURE_CALL_JAVA) != 0)); } ALOGV("setCaptureCallBack() rate: %d thread %p flags 0x%08x", rate, mCaptureThread.get(), mCaptureFlags); @@ -439,7 +440,7 @@ void Visualizer::controlStatusChanged(bool controlGranted) { //------------------------------------------------------------------------- -Visualizer::CaptureThread::CaptureThread(Visualizer* receiver, uint32_t captureRate, +Visualizer::CaptureThread::CaptureThread(const sp& receiver, uint32_t captureRate, bool bCanCallJava) : Thread(bCanCallJava), mReceiver(receiver) { diff --git a/media/jni/audioeffect/Visualizer.h b/media/jni/audioeffect/Visualizer.h index 3d5d74a99d0e3..b38c01f62cf1b 100644 --- a/media/jni/audioeffect/Visualizer.h +++ b/media/jni/audioeffect/Visualizer.h @@ -157,7 +157,8 @@ private: class CaptureThread : public Thread { public: - CaptureThread(Visualizer* visualizer, uint32_t captureRate, bool bCanCallJava = false); + CaptureThread(const sp& visualizer, + uint32_t captureRate, bool bCanCallJava = false); private: friend class Visualizer; diff --git a/media/jni/audioeffect/android_media_AudioEffect.cpp b/media/jni/audioeffect/android_media_AudioEffect.cpp index 2fb85a7f4b92c..63e48aa622d07 100644 --- a/media/jni/audioeffect/android_media_AudioEffect.cpp +++ b/media/jni/audioeffect/android_media_AudioEffect.cpp @@ -205,15 +205,15 @@ static sp getAudioEffect(JNIEnv* env, jobject thiz) Mutex::Autolock l(sLock); AudioEffect* const ae = (AudioEffect*)env->GetLongField(thiz, fields.fidNativeAudioEffect); - return sp(ae); + return sp::fromExisting(ae); } static sp setAudioEffect(JNIEnv* env, jobject thiz, const sp& ae) { Mutex::Autolock l(sLock); - sp old = - (AudioEffect*)env->GetLongField(thiz, fields.fidNativeAudioEffect); + sp old = sp::fromExisting( + (AudioEffect*)env->GetLongField(thiz, fields.fidNativeAudioEffect)); if (ae.get()) { ae->incStrong((void*)setAudioEffect); } @@ -347,8 +347,8 @@ android_media_AudioEffect_native_setup(JNIEnv *env, jobject thiz, jobject weak_t // create the native AudioEffect object parcel = parcelForJavaObject(env, jAttributionSource); attributionSource.readFromParcel(parcel); - lpAudioEffect = new AudioEffect(attributionSource); - if (lpAudioEffect == 0) { + lpAudioEffect = sp::make(attributionSource); + if (lpAudioEffect == 0) { // FIXME: I don't think this is actually possible. ALOGE("Error creating AudioEffect"); goto setup_failure; } diff --git a/media/jni/audioeffect/android_media_Visualizer.cpp b/media/jni/audioeffect/android_media_Visualizer.cpp index 7b00f9392395d..8cd6dfa02aa60 100644 --- a/media/jni/audioeffect/android_media_Visualizer.cpp +++ b/media/jni/audioeffect/android_media_Visualizer.cpp @@ -251,15 +251,15 @@ static sp getVisualizer(JNIEnv* env, jobject thiz) Mutex::Autolock l(sLock); Visualizer* const v = (Visualizer*)env->GetLongField(thiz, fields.fidNativeVisualizer); - return sp(v); + return sp::fromExisting(v); } static sp setVisualizer(JNIEnv* env, jobject thiz, const sp& v) { Mutex::Autolock l(sLock); - sp old = - (Visualizer*)env->GetLongField(thiz, fields.fidNativeVisualizer); + sp old = sp::fromExisting( + (Visualizer*)env->GetLongField(thiz, fields.fidNativeVisualizer)); if (v.get()) { v->incStrong((void*)setVisualizer); }