Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 367d3dfb authored by Andy Hung's avatar Andy Hung Committed by Android (Google) Code Review
Browse files

Merge "AudioFlinger: Update DeviceEffectManager class includes" into udc-dev-plus-aosp

parents aa1af23c 9a3f8187
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -86,6 +86,7 @@
#include <private/android_filesystem_config.h>

//#define BUFLOG_NDEBUG 0
#include <afutils/DumpTryLock.h>
#include <afutils/BufLog.h>
#include <afutils/TypedLogger.h>

@@ -858,12 +859,6 @@ void AudioFlinger::dumpPermissionDenial(int fd, const Vector<String16>& args __u
    write(fd, result.c_str(), result.size());
}

bool AudioFlinger::dumpTryLock(Mutex& mutex)
{
    status_t err = mutex.timedLock(kDumpLockTimeoutNs);
    return err == NO_ERROR;
}

status_t AudioFlinger::dump(int fd, const Vector<String16>& args)
NO_THREAD_SAFETY_ANALYSIS  // conditional try lock
{
@@ -871,7 +866,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock
        dumpPermissionDenial(fd, args);
    } else {
        // get state of hardware lock
        bool hardwareLocked = dumpTryLock(mHardwareLock);
        const bool hardwareLocked = afutils::dumpTryLock(mHardwareLock);
        if (!hardwareLocked) {
            String8 result(kHardwareLockedString);
            write(fd, result.c_str(), result.size());
@@ -879,7 +874,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock
            mHardwareLock.unlock();
        }

        const bool locked = dumpTryLock(mLock);
        const bool locked = afutils::dumpTryLock(mLock);

        // failed to lock - AudioFlinger is probably deadlocked
        if (!locked) {
@@ -887,7 +882,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock
            write(fd, result.c_str(), result.size());
        }

        bool clientLocked = dumpTryLock(mClientLock);
        const bool clientLocked = afutils::dumpTryLock(mClientLock);
        if (!clientLocked) {
            String8 result(kClientLockedString);
            write(fd, result.c_str(), result.size());
+0 −5
Original line number Diff line number Diff line
@@ -574,11 +574,6 @@ public:
    // AudioFlinger::setParameters() updates, other threads read w/o lock
    static uint32_t         mScreenState;

    // Internal dump utilities.
    static const int kDumpLockTimeoutNs = 1 * NANOS_PER_SECOND;

    // TODO(b/291319167) extract to afutils
    static bool dumpTryLock(Mutex& mutex);
private:
    void dumpPermissionDenial(int fd, const Vector<String16>& args);
    void dumpClients(int fd, const Vector<String16>& args);
+6 −5
Original line number Diff line number Diff line
@@ -15,16 +15,17 @@
** limitations under the License.
*/


#define LOG_TAG "DeviceEffectManager"
//#define LOG_NDEBUG 0

#include <utils/Log.h>
#include <audio_utils/primitives.h>
#include "DeviceEffectManager.h"

#include "AudioFlinger.h"
#include "EffectConfiguration.h"

#include <afutils/DumpTryLock.h>
#include <audio_utils/primitives.h>
#include <media/audiohal/EffectsFactoryHalInterface.h>
#include <utils/Log.h>

// ----------------------------------------------------------------------------

@@ -172,7 +173,7 @@ status_t DeviceEffectManager::createEffectHal(
void DeviceEffectManager::dump(int fd)
NO_THREAD_SAFETY_ANALYSIS  // conditional try lock
{
    const bool locked = AudioFlinger::dumpTryLock(mLock);
    const bool locked = afutils::dumpTryLock(mLock);
    if (!locked) {
        String8 result("DeviceEffectManager may be deadlocked\n");
        write(fd, result.c_str(), result.size());
+5 −0
Original line number Diff line number Diff line
@@ -17,6 +17,11 @@

#pragma once

#include "IAfEffect.h"
#include "PatchCommandThread.h"

#include <utils/Mutex.h>  // avoid transitive dependency

namespace android {

class IAfDeviceEffectManagerCallback : public virtual RefBase {
+6 −5
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#include <system/audio_effects/effect_ns.h>
#include <system/audio_effects/effect_spatializer.h>
#include <system/audio_effects/effect_visualizer.h>
#include <afutils/DumpTryLock.h>
#include <audio_utils/channels.h>
#include <audio_utils/primitives.h>
#include <media/AudioCommonTypes.h>
@@ -507,7 +508,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock

    result.appendFormat("\tEffect ID %d:\n", mId);

    bool locked = AudioFlinger::dumpTryLock(mLock);
    const bool locked = afutils::dumpTryLock(mLock);
    // failed to lock - AudioFlinger is probably deadlocked
    if (!locked) {
        result.append("\t\tCould not lock Fx mutex:\n");
@@ -1621,7 +1622,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock
    EffectBase::dump(fd, args);

    String8 result;
    bool locked = AudioFlinger::dumpTryLock(mLock);
    const bool locked = afutils::dumpTryLock(mLock);

    result.append("\t\tStatus Engine:\n");
    result.appendFormat("\t\t%03d    %p\n",
@@ -2095,7 +2096,7 @@ void EffectHandle::framesProcessed(int32_t frames) const
void EffectHandle::dumpToBuffer(char* buffer, size_t size) const
NO_THREAD_SAFETY_ANALYSIS  // conditional try lock
{
    bool locked = mCblk != NULL && AudioFlinger::dumpTryLock(mCblk->lock);
    const bool locked = mCblk != nullptr && afutils::dumpTryLock(mCblk->lock);

    snprintf(buffer, size, "\t\t\t%5d    %5d  %3s    %3s  %5u  %5u\n",
            (mClient == 0) ? getpid() : mClient->pid(),
@@ -2644,7 +2645,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock
    result.appendFormat("    %zu effects for session %d\n", numEffects, mSessionId);

    if (numEffects) {
        bool locked = AudioFlinger::dumpTryLock(mLock);
        const bool locked = afutils::dumpTryLock(mLock);
        // failed to lock - AudioFlinger is probably deadlocked
        if (!locked) {
            result.append("\tCould not lock mutex:\n");
@@ -3480,7 +3481,7 @@ NO_THREAD_SAFETY_ANALYSIS // conditional try lock
    const Vector<String16> args;
    EffectBase::dump(fd, args);

    const bool locked = AudioFlinger::dumpTryLock(mProxyLock);
    const bool locked = afutils::dumpTryLock(mProxyLock);
    if (!locked) {
        String8 result("DeviceEffectProxy may be deadlocked\n");
        write(fd, result.c_str(), result.size());
Loading