Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: fe2cfbc719090ccedd59a6286cd3523ab7bf5cd3 https://github.com/WebKit/WebKit/commit/fe2cfbc719090ccedd59a6286cd3523ab7bf5cd3 Author: Andy Estes <aes...@apple.com> Date: 2023-10-30 (Mon, 30 Oct 2023)
Changed paths: M Source/WebCore/platform/cocoa/WebAVPlayerLayerView.mm Log Message: ----------- [iOS] Memory management of WebAVPictureInPicturePlayerLayerView instances in WebAVPlayerLayerView is confusing https://bugs.webkit.org/show_bug.cgi?id=263916 rdar://117364434 Reviewed by Tim Horton and Simon Fraser. WebAVPlayerLayerView_pictureInPicturePlayerLayerView creates an instance of WebAVPictureInPicturePlayerLayerView but does not adopt it, leaking its +1 retain count. It is then stored in WebAVPlayerLayerView's _pictureInPicturePlayerLayerView ivar, which retains it. Later, WebAVPlayerLayerView_dealloc adopts the leaked instance stored in _pictureInPicturePlayerLayerView and sets the ivar to nil. This releases the instance twice, balancing the +2 retain count from earlier. This is correct but confusing, as it isn't the conventional way we manage an instance's retain count. Addressed the confusion by adopting the new WebAVPictureInPicturePlayerLayerView instance in WebAVPlayerLayerView_pictureInPicturePlayerLayerView rather than leaking it until WebAVPlayerLayerView_dealloc is called. Fixed a few formatting issues while here. * Source/WebCore/platform/cocoa/WebAVPlayerLayerView.mm: (WebCore::WebAVPlayerLayerView_setPlayerController): (WebCore::WebAVPlayerLayerView_playerLayer): (WebCore::WebAVPlayerLayerView_startRoutingVideoToPictureInPicturePlayerLayerView): (WebCore::WebAVPlayerLayerView_pictureInPicturePlayerLayerView): (WebCore::WebAVPlayerLayerView_dealloc): (WebCore::allocWebAVPlayerLayerViewInstance): (WebCore::allocWebAVPictureInPicturePlayerLayerViewInstance): Canonical link: https://commits.webkit.org/269989@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes