Bug 1347439 - 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 498975 a003fbc97950a2c209300254874e7cf9ecf74d42
parent 498974 b80ffb29331b9142f41c95ee7c43617a769488aa
child 498976 a6b858e55d989556ced97e8160d6d744c573ea1e
push id49299
push userbmo:jolin@mozilla.com
push dateWed, 15 Mar 2017 08:25:49 +0000
reviewersjya
bugs1347439, 1336792
milestone53.0
Bug 1347439 - part 3: release outputs not sent for rendering. r?jya Cherry-picked from bug 1336792 part 3 MozReview-Commit-ID: 20m2WubTebm
dom/media/platforms/android/RemoteDataDecoder.cpp
--- a/dom/media/platforms/android/RemoteDataDecoder.cpp
+++ b/dom/media/platforms/android/RemoteDataDecoder.cpp
@@ -142,16 +142,19 @@ public:
       : JavaCallbacksSupport(aCallback)
       , mDecoder(aDecoder)
     {}
 
     virtual ~CallbacksSupport() {}
 
     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));
       MOZ_ASSERT(ok);
 
       int32_t offset;
       ok |= NS_SUCCEEDED(info->Offset(&offset));
@@ -180,19 +183,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));
 
         mDecoderCallback->Output(v);
       }
 
       if (isEOS) {
         mDecoderCallback->DrainComplete();
       }
     }