Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: dfa421425d517ac2b7822c9b758cacb9d52743b2
      
https://github.com/WebKit/WebKit/commit/dfa421425d517ac2b7822c9b758cacb9d52743b2
  Author: Philippe Normand <ph...@igalia.com>
  Date:   2023-08-22 (Tue, 22 Aug 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/gstreamer/ImageGStreamer.h
    M Source/WebCore/platform/graphics/gstreamer/ImageGStreamerCairo.cpp
    M Source/WebCore/platform/graphics/gstreamer/VideoDecoderGStreamer.cpp

  Log Message:
  -----------
  [GStreamer][WebCodecs] Circular references in video decoder leading to memory 
leaks
https://bugs.webkit.org/show_bug.cgi?id=260423

Reviewed by Xabier Rodriguez-Calvar.

Circular references between the GStreamerInternalVideoDecoder and its harness 
through captured
references in lambdas was preventing proper cleanup of the harness when closing 
the decoder. Using
WeakPtrs instead of strong Refs in captured variables fixes the issue.

Also, driving-by, fixing the ImageGStreamer API to fit with our style 
guidelines and making sure the
sample is cleared *after* the associated video frame is un-mapped.

* Source/WebCore/platform/graphics/gstreamer/ImageGStreamer.h:
(WebCore::ImageGStreamer::createImage):
* Source/WebCore/platform/graphics/gstreamer/ImageGStreamerCairo.cpp:
(WebCore::ImageGStreamer::~ImageGStreamer):
* Source/WebCore/platform/graphics/gstreamer/VideoDecoderGStreamer.cpp:
(WebCore::GStreamerInternalVideoDecoder::harnessedElement const):
(WebCore::GStreamerVideoDecoder::create):
(WebCore::GStreamerVideoDecoder::~GStreamerVideoDecoder):
(WebCore::GStreamerInternalVideoDecoder::GStreamerInternalVideoDecoder):
(WebCore::GStreamerInternalVideoDecoder::decode):

Canonical link: https://commits.webkit.org/267132@main


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to