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

Commit 4e1c91dd authored by Insun Kang's avatar Insun Kang
Browse files

Fix a bug: WOULD_BLOCK handling in TimedTextPlayer.

Bug: 6234756

Change-Id: I0fae6e5ad8607d472faad7dd680e020f20ac1669
parent 73d22755
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -75,6 +75,21 @@ void TimedTextPlayer::onMessageReceived(const sp<AMessage> &msg) {
            mSendSubtitleGeneration++;
            break;
        }
        case kWhatRetryRead: {
            int64_t seekTimeUs;
            int seekMode;
            if (msg->findInt64("seekTimeUs", &seekTimeUs) &&
                msg->findInt32("seekMode", &seekMode)) {
                MediaSource::ReadOptions options;
                options.setSeekTo(
                    seekTimeUs,
                    static_cast<MediaSource::ReadOptions::SeekMode>(seekMode));
                doRead(&options);
            } else {
                doRead();
            }
            break;
        }
        case kWhatSeek: {
            int64_t seekTimeUs = 0;
            msg->findInt64("seekTimeUs", &seekTimeUs);
@@ -146,7 +161,15 @@ void TimedTextPlayer::doRead(MediaSource::ReadOptions* options) {
    status_t err = mSource->read(&startTimeUs, &endTimeUs,
                                 &(parcelEvent->parcel), options);
    if (err == WOULD_BLOCK) {
        postTextEventDelayUs(NULL, kWaitTimeUsToRetryRead);
        sp<AMessage> msg = new AMessage(kWhatRetryRead);
        if (options != NULL) {
            int64_t seekTimeUs;
            MediaSource::ReadOptions::SeekMode seekMode;
            CHECK(options->getSeekTo(&seekTimeUs, &seekMode));
            msg->setInt64("seekTimeUs", seekTimeUs);
            msg->setInt32("seekMode", seekMode);
        }
        msg->post(kWaitTimeUsToRetryRead);
        return;
    } else if (err != OK) {
        notifyError(err);
+1 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ private:
    enum {
        kWhatPause = 'paus',
        kWhatSeek = 'seek',
        kWhatRetryRead = 'read',
        kWhatSendSubtitle = 'send',
        kWhatSetSource = 'ssrc',
    };