Merge "Avoid creating sp<> from a pointer" am: 51766ce04f am: d840cac9d8

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2215589

Change-Id: I92d9e361ce1e87fdb2dd16e7374f2c4b6db7dab6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2022-09-14 03:08:02 +00:00
committed by Automerger Merge Worker
5 changed files with 15 additions and 12 deletions

View File

@@ -28,7 +28,7 @@ cc_library_shared {
"libaudioclient", "libaudioclient",
"libaudioutils", "libaudioutils",
"libaudiofoundation", "libaudiofoundation",
"libbinder" "libbinder",
], ],
export_shared_lib_headers: [ export_shared_lib_headers: [
@@ -42,6 +42,7 @@ cc_library_shared {
"-Werror", "-Werror",
"-Wunused", "-Wunused",
"-Wunreachable-code", "-Wunreachable-code",
"-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION",
], ],
// Workaround Clang LTO crash. // Workaround Clang LTO crash.

View File

@@ -142,7 +142,8 @@ status_t Visualizer::setCaptureCallBack(capture_cbk_t cbk, void* user, uint32_t
mCaptureRate = rate; mCaptureRate = rate;
if (cbk != NULL) { if (cbk != NULL) {
mCaptureThread = new CaptureThread(this, rate, ((flags & CAPTURE_CALL_JAVA) != 0)); mCaptureThread = sp<CaptureThread>::make(
sp<Visualizer>::fromExisting(this), rate, ((flags & CAPTURE_CALL_JAVA) != 0));
} }
ALOGV("setCaptureCallBack() rate: %d thread %p flags 0x%08x", ALOGV("setCaptureCallBack() rate: %d thread %p flags 0x%08x",
rate, mCaptureThread.get(), mCaptureFlags); 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<Visualizer>& receiver, uint32_t captureRate,
bool bCanCallJava) bool bCanCallJava)
: Thread(bCanCallJava), mReceiver(receiver) : Thread(bCanCallJava), mReceiver(receiver)
{ {

View File

@@ -157,7 +157,8 @@ private:
class CaptureThread : public Thread class CaptureThread : public Thread
{ {
public: public:
CaptureThread(Visualizer* visualizer, uint32_t captureRate, bool bCanCallJava = false); CaptureThread(const sp<Visualizer>& visualizer,
uint32_t captureRate, bool bCanCallJava = false);
private: private:
friend class Visualizer; friend class Visualizer;

View File

@@ -205,15 +205,15 @@ static sp<AudioEffect> getAudioEffect(JNIEnv* env, jobject thiz)
Mutex::Autolock l(sLock); Mutex::Autolock l(sLock);
AudioEffect* const ae = AudioEffect* const ae =
(AudioEffect*)env->GetLongField(thiz, fields.fidNativeAudioEffect); (AudioEffect*)env->GetLongField(thiz, fields.fidNativeAudioEffect);
return sp<AudioEffect>(ae); return sp<AudioEffect>::fromExisting(ae);
} }
static sp<AudioEffect> setAudioEffect(JNIEnv* env, jobject thiz, static sp<AudioEffect> setAudioEffect(JNIEnv* env, jobject thiz,
const sp<AudioEffect>& ae) const sp<AudioEffect>& ae)
{ {
Mutex::Autolock l(sLock); Mutex::Autolock l(sLock);
sp<AudioEffect> old = sp<AudioEffect> old = sp<AudioEffect>::fromExisting(
(AudioEffect*)env->GetLongField(thiz, fields.fidNativeAudioEffect); (AudioEffect*)env->GetLongField(thiz, fields.fidNativeAudioEffect));
if (ae.get()) { if (ae.get()) {
ae->incStrong((void*)setAudioEffect); 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 // create the native AudioEffect object
parcel = parcelForJavaObject(env, jAttributionSource); parcel = parcelForJavaObject(env, jAttributionSource);
attributionSource.readFromParcel(parcel); attributionSource.readFromParcel(parcel);
lpAudioEffect = new AudioEffect(attributionSource); lpAudioEffect = sp<AudioEffect>::make(attributionSource);
if (lpAudioEffect == 0) { if (lpAudioEffect == 0) { // FIXME: I don't think this is actually possible.
ALOGE("Error creating AudioEffect"); ALOGE("Error creating AudioEffect");
goto setup_failure; goto setup_failure;
} }

View File

@@ -251,15 +251,15 @@ static sp<Visualizer> getVisualizer(JNIEnv* env, jobject thiz)
Mutex::Autolock l(sLock); Mutex::Autolock l(sLock);
Visualizer* const v = Visualizer* const v =
(Visualizer*)env->GetLongField(thiz, fields.fidNativeVisualizer); (Visualizer*)env->GetLongField(thiz, fields.fidNativeVisualizer);
return sp<Visualizer>(v); return sp<Visualizer>::fromExisting(v);
} }
static sp<Visualizer> setVisualizer(JNIEnv* env, jobject thiz, static sp<Visualizer> setVisualizer(JNIEnv* env, jobject thiz,
const sp<Visualizer>& v) const sp<Visualizer>& v)
{ {
Mutex::Autolock l(sLock); Mutex::Autolock l(sLock);
sp<Visualizer> old = sp<Visualizer> old = sp<Visualizer>::fromExisting(
(Visualizer*)env->GetLongField(thiz, fields.fidNativeVisualizer); (Visualizer*)env->GetLongField(thiz, fields.fidNativeVisualizer));
if (v.get()) { if (v.get()) {
v->incStrong((void*)setVisualizer); v->incStrong((void*)setVisualizer);
} }