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

Commit 5583ed43 authored by Eric Laurent's avatar Eric Laurent Committed by Android Git Automerger
Browse files

am 91e2d865: Merge change 24337 into eclair

Merge commit '91e2d8651fe38a921b37a8bf8b3148c572cf9430' into eclair-plus-aosp

* commit '91e2d8651fe38a921b37a8bf8b3148c572cf9430':
  Fix issue 2107584: media server crash when AudioFlinger fails to allocate memory for track control block.
parents 13ed932a a72e166d
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ public:
                                status_t *status)
    {
        Parcel data, reply;
        sp<IAudioTrack> track;
        data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
        data.writeInt32(pid);
        data.writeInt32(streamType);
@@ -96,12 +97,14 @@ public:
        status_t lStatus = remote()->transact(CREATE_TRACK, data, &reply);
        if (lStatus != NO_ERROR) {
            LOGE("createTrack error: %s", strerror(-lStatus));
        }
        } else {
            lStatus = reply.readInt32();
            track = interface_cast<IAudioTrack>(reply.readStrongBinder());
        }
        if (status) {
            *status = lStatus;
        }
        return interface_cast<IAudioTrack>(reply.readStrongBinder());
        return track;
    }

    virtual sp<IAudioRecord> openRecord(
@@ -115,6 +118,7 @@ public:
                                status_t *status)
    {
        Parcel data, reply;
        sp<IAudioRecord> record;
        data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
        data.writeInt32(pid);
        data.writeInt32(input);
@@ -123,12 +127,17 @@ public:
        data.writeInt32(channelCount);
        data.writeInt32(frameCount);
        data.writeInt32(flags);
        remote()->transact(OPEN_RECORD, data, &reply);
        status_t lStatus = reply.readInt32();
        status_t lStatus = remote()->transact(OPEN_RECORD, data, &reply);
        if (lStatus != NO_ERROR) {
            LOGE("openRecord error: %s", strerror(-lStatus));
        } else {
            lStatus = reply.readInt32();
            record = interface_cast<IAudioRecord>(reply.readStrongBinder());
        }
        if (status) {
            *status = lStatus;
        }
        return interface_cast<IAudioRecord>(reply.readStrongBinder());
        return record;
    }

    virtual uint32_t sampleRate(int output) const
+6 −2
Original line number Diff line number Diff line
@@ -56,9 +56,13 @@ public:
    virtual sp<IMemory> getCblk() const
    {
        Parcel data, reply;
        sp<IMemory> cblk;
        data.writeInterfaceToken(IAudioRecord::getInterfaceDescriptor());
        remote()->transact(GET_CBLK, data, &reply);
        return interface_cast<IMemory>(reply.readStrongBinder());
        status_t status = remote()->transact(GET_CBLK, data, &reply);
        if (status == NO_ERROR) {
            cblk = interface_cast<IMemory>(reply.readStrongBinder());
        }
        return cblk;
    }    
};

+6 −2
Original line number Diff line number Diff line
@@ -81,9 +81,13 @@ public:
    virtual sp<IMemory> getCblk() const
    {
        Parcel data, reply;
        sp<IMemory> cblk;
        data.writeInterfaceToken(IAudioTrack::getInterfaceDescriptor());
        remote()->transact(GET_CBLK, data, &reply);
        return interface_cast<IMemory>(reply.readStrongBinder());
        status_t status = remote()->transact(GET_CBLK, data, &reply);
        if (status == NO_ERROR) {
            cblk = interface_cast<IMemory>(reply.readStrongBinder());
        }
        return cblk;
    }    
};