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

Commit 93b375b7 authored by qinzhichao's avatar qinzhichao Committed by android-build-merger
Browse files

Merge "Fix issues crashing with Fatal signal when calling getFormat"

am: 1808b0e3

Change-Id: Ie79ccfbf101b3a7144f7a7a80d1af7bdeb53cae5
parents 238c48e4 1808b0e3
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -691,6 +691,12 @@ void NuPlayer::GenericSource::onMessageReceived(const sp<AMessage> &msg) {
          break;
      }

      case kWhatGetTrackInfo:
      {
          onGetTrackInfo(msg);
          break;
      }

      case kWhatSelectTrack:
      {
          onSelectTrack(msg);
@@ -960,6 +966,34 @@ size_t NuPlayer::GenericSource::getTrackCount() const {
}

sp<AMessage> NuPlayer::GenericSource::getTrackInfo(size_t trackIndex) const {
    sp<AMessage> msg = new AMessage(kWhatGetTrackInfo, this);
    msg->setSize("trackIndex", trackIndex);

    sp<AMessage> response;
    sp<RefBase> format;
    status_t err = msg->postAndAwaitResponse(&response);
    if (err == OK && response != NULL) {
        CHECK(response->findObject("format", &format));
        return static_cast<AMessage*>(format.get());
    } else {
        return NULL;
    }
}

void NuPlayer::GenericSource::onGetTrackInfo(const sp<AMessage>& msg) const {
    size_t trackIndex;
    CHECK(msg->findSize("trackIndex", &trackIndex));

    sp<AMessage> response = new AMessage;
    sp<AMessage> format = doGetTrackInfo(trackIndex);
    response->setObject("format", format);

    sp<AReplyToken> replyID;
    CHECK(msg->senderAwaitsResponse(&replyID));
    response->postReply(replyID);
}

sp<AMessage> NuPlayer::GenericSource::doGetTrackInfo(size_t trackIndex) const {
    size_t trackCount = mSources.size();
    if (trackIndex >= trackCount) {
        return NULL;
+3 −0
Original line number Diff line number Diff line
@@ -251,6 +251,9 @@ private:
    void onGetFormatMeta(const sp<AMessage>& msg) const;
    sp<MetaData> doGetFormatMeta(bool audio) const;

    void onGetTrackInfo(const sp<AMessage>& msg) const;
    sp<AMessage> doGetTrackInfo(size_t trackIndex) const;

    void onGetSelectedTrack(const sp<AMessage>& msg) const;
    ssize_t doGetSelectedTrack(media_track_type type) const;