[webkit-changes] [WebKit/WebKit] 9b1c8b: [GStreamer] Improve GBM swapchain buffer handling

Žan Doberšek noreply at github.com
Thu Mar 2 09:45:12 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9b1c8b87c0a4e15d6fae01eab25971e7c76b6b9a
      https://github.com/WebKit/WebKit/commit/9b1c8b87c0a4e15d6fae01eab25971e7c76b6b9a
  Author: Žan Doberšek <zdobersek at igalia.com>
  Date:   2023-03-02 (Thu, 02 Mar 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

  Log Message:
  -----------
  [GStreamer] Improve GBM swapchain buffer handling
https://bugs.webkit.org/show_bug.cgi?id=253245

Reviewed by Philippe Normand.

In MediaPlayerPrivateGStreamer::pushDMABufToCompositor(), when allocating
buffer objects from the GBMBufferSwapchain to upload the software-decoded
video data, do a null check on the retrieved buffer. This avoids proceeding with
a null object that would be returned when for whatever perverse reason the
swapchain is drained of available buffers.

One such reason is when allocating, retrieving and locking buffers from the
swapchain under an inactive proxy. In that case, the buffer doesn't end up
being pushed into the composition, and it's then also never released and made
available for reuse, effectively draining the swapchain.

This case is avoidable through earlier detection of an inactive proxy. The proxy
lock and is-active check are unified between different codepaths and done before
deciding which codepath is taken.

* Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::pushDMABufToCompositor):

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




More information about the webkit-changes mailing list