[webkit-changes] [WebKit/WebKit] 98f239: REGRESSION (275262 at main): Unable to play games in ...

Jer Noble noreply at github.com
Fri Mar 1 02:04:51 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 98f2399f9450976e2a8a780e73f6b1263b18ac15
      https://github.com/WebKit/WebKit/commit/98f2399f9450976e2a8a780e73f6b1263b18ac15
  Author: Jer Noble <jer.noble at apple.com>
  Date:   2024-03-01 (Fri, 01 Mar 2024)

  Changed paths:
    M Source/WebCore/platform/audio/SharedAudioDestination.cpp

  Log Message:
  -----------
  REGRESSION (275262 at main): Unable to play games in PBS Kids Games app
https://bugs.webkit.org/show_bug.cgi?id=270284
rdar://123811318

Reviewed by Chris Dumez.

The SharedAudioDestinationAdapter's configuration queue would become stuck, waiting on
a semaphore which would never be triggered. This appears to be a latent bug in the
RemoteAudioDestinationProxy/Manager, but one that has dire implications now that
SharedAudioDestination depends on its Adapter's render() method being called.

Rather than block on a Semaphore to ensure the Adapter is configured before calling
the completion handlers, simply pass the completion handler into the Adapter's
inner destination's start() or stop() methods. Only when the Adapter is already started
(or when it's stopped and does not need to be restarted) should the completion
handler get called explicitly.

Now that blocking is not needed, neither is the Adapter's configuration queue; all
the setup for configuration can happen on the main thread.

* Source/WebCore/platform/audio/SharedAudioDestination.cpp:
(WebCore::SharedAudioDestinationAdapter::protectedWorkBus):
(WebCore::SharedAudioDestinationAdapter::~SharedAudioDestinationAdapter):
(WebCore::SharedAudioDestinationAdapter::addRenderer):
(WebCore::SharedAudioDestinationAdapter::removeRenderer):
(WebCore::SharedAudioDestinationAdapter::configureRenderThread):
(WebCore::SharedAudioDestinationAdapter::callAllConfigurationHandlers):
(WebCore::SharedAudioDestinationAdapter::render):
(WebCore::SharedAudioDestinationAdapter::protectedConfigurationQueue): Deleted.
(WebCore::m_configurationSemaphore): Deleted.

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



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list