WebKit icon indicating copy to clipboard operation
WebKit copied to clipboard

REGRESSION (275262@main): Unable to play games in PBS Kids Games app

Open jernoble opened this issue 1 year ago โ€ข 3 comments

ffc55da6bddb13bfeea20af84dc52c8b72539b39

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

Reviewed by NOBODY (OOPS!).

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.

https://github.com/WebKit/WebKit/commit/ffc55da6bddb13bfeea20af84dc52c8b72539b39

Misc iOS, tvOS & watchOS macOS Linux Windows
โœ… ๐Ÿงช style โœ… ๐Ÿ›  ios โœ… ๐Ÿ›  mac โœ… ๐Ÿ›  wpe โœ… ๐Ÿ›  wincairo
โœ… ๐Ÿงช bindings โœ… ๐Ÿ›  ios-sim โœ… ๐Ÿ›  mac-AS-debug loading-orange ๐Ÿงช wpe-wk2
โœ… ๐Ÿงช webkitperl โœ… ๐Ÿงช ios-wk2 โœ… ๐Ÿงช api-mac โœ… ๐Ÿงช api-wpe
โœ… ๐Ÿงช ios-wk2-wpt โœ… ๐Ÿงช mac-wk1 โœ… ๐Ÿ›  gtk
โœ… ๐Ÿงช api-ios โœ… ๐Ÿงช mac-wk2 loading ๐Ÿงช gtk-wk2
โœ… ๐Ÿ›  tv loading ๐Ÿงช mac-AS-debug-wk2 โœ… ๐Ÿงช api-gtk
โœ… ๐Ÿ›  tv-sim
โœ… ๐Ÿ›  watch
โœ… ๐Ÿ›  watch-sim

jernoble avatar Feb 29 '24 06:02 jernoble

Safe-Merge-Queue: Build #13666.

webkit-ews-buildbot avatar Mar 01 '24 09:03 webkit-ews-buildbot

Committed 275542@main (98f2399f9450): https://commits.webkit.org/275542@main

Reviewed commits have been landed. Closing PR #25281 and removing active labels.

webkit-commit-queue avatar Mar 01 '24 10:03 webkit-commit-queue