Bug 1336792 - part 3: release outputs not sent for rendering. r?jya draft
authorJohn Lin <jolin@mozilla.com>
Fri, 10 Feb 2017 16:47:20 +0800
changeset 481659 4e735e60687495d9de47d39ff54ed68e9fd47034
parent 481658 ca32ae36352f5aa67fcdf9f75a56bc893264e1ab
child 545266 00596ae14abc7fa8935369f1cc92af8ed965e28e
push id44897
push userbmo:jolin@mozilla.com
push dateFri, 10 Feb 2017 09:25:54 +0000
reviewersjya
bugs1336792
milestone54.0a1
Bug 1336792 - part 3: release outputs not sent for rendering. r?jya MozReview-Commit-ID: 9dQc80av5Kr
dom/media/platforms/android/RemoteDataDecoder.cpp
--- a/dom/media/platforms/android/RemoteDataDecoder.cpp
+++ b/dom/media/platforms/android/RemoteDataDecoder.cpp
@@ -145,16 +145,19 @@ public:
 
     void HandleInputExhausted() override
     {
       mDecoder->InputExhausted();
     }
 
     void HandleOutput(Sample::Param aSample) override
     {
+      UniquePtr<VideoData::Listener>
+        releaseSample(new RenderOrReleaseOutput(mDecoder->mJavaDecoder, aSample));
+
       BufferInfo::LocalRef info = aSample->Info();
 
       int32_t flags;
       bool ok = NS_SUCCEEDED(info->Flags(&flags));
 
       int32_t offset;
       ok &= NS_SUCCEEDED(info->Offset(&offset));
 
@@ -183,19 +186,17 @@ public:
 
         RefPtr<VideoData> v = VideoData::CreateFromImage(
           mDecoder->mConfig, offset, presentationTimeUs, durationUs,
           img, !!(flags & MediaCodec::BUFFER_FLAG_SYNC_FRAME),
           presentationTimeUs,
           gfx::IntRect(0, 0, mDecoder->mConfig.mDisplay.width,
                        mDecoder->mConfig.mDisplay.height));
 
-        UniquePtr<VideoData::Listener> listener(
-          new RenderOrReleaseOutput(mDecoder->mJavaDecoder, aSample));
-        v->SetListener(Move(listener));
+        v->SetListener(Move(releaseSample));
 
         mDecoder->Output(v);
       }
 
       if (isEOS) {
         mDecoder->DrainComplete();
       }
     }