From 9ba1057e54a0e894ae26b2bb605c03dffe9ccf4a Mon Sep 17 00:00:00 2001 From: Karl Tomlinson Date: Wed, 30 Oct 2024 13:21:33 +0100 Subject: [PATCH] Bug 1920800 - Remove oldImages from check for flushed old principal handle The logic should be equivalent when frame IDs on aImages are contiguously increasing from IDs on previously set frames. There are currently no callers passing empty aImages, but the logic in this case would now be as described in the documentation of UpdatePrincipalHandleForFrameID(): > We will notify mElement that aPrincipalHandle has been applied when all > FrameIDs prior to aFrameID have been flushed out. --- dom/media/VideoFrameContainer.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/dom/media/VideoFrameContainer.cpp b/dom/media/VideoFrameContainer.cpp index 9b4237512f..e482c50bb3 100644 --- a/dom/media/VideoFrameContainer.cpp +++ b/dom/media/VideoFrameContainer.cpp @@ -225,19 +225,13 @@ void VideoFrameContainer::SetCurrentFramesLocked(const gfx::IntSize& aIntrinsicS nsTArray oldImages; mImageContainer->GetCurrentImages(&oldImages); - ImageContainer::FrameID lastFrameIDForOldPrincipalHandle = - mFrameIDForPendingPrincipalHandle - 1; if (mPendingPrincipalHandle != PRINCIPAL_HANDLE_NONE && - ((!oldImages.IsEmpty() && - oldImages.LastElement().mFrameID >= lastFrameIDForOldPrincipalHandle) || - (!aImages.IsEmpty() && - aImages[0].mFrameID > lastFrameIDForOldPrincipalHandle))) { - // We are releasing the last FrameID prior to `lastFrameIDForOldPrincipalHandle` - // OR - // there are no FrameIDs prior to `lastFrameIDForOldPrincipalHandle` in the new - // set of images. - // This means that the old principal handle has been flushed out and we can - // notify our video element about this change. + (aImages.IsEmpty() || + aImages[0].mFrameID >= mFrameIDForPendingPrincipalHandle)) { + // There are no FrameIDs prior to `mFrameIDForPendingPrincipalHandle` + // in the new set of images. + // This means that the old principal handle has been flushed out and we + // can notify our video element about this change. RefPtr self = this; PrincipalHandle principalHandle = mPendingPrincipalHandle; mLastPrincipalHandle = mPendingPrincipalHandle;