electron/shell
Athul Iddya 905e41bbdd
fix: use StartUpdating method for PipeWire capturer (#38833)
* fix: use StartUpdating method for PipeWire capturer

Fixed a crash related to PipeWire capturer by adapting to Chromium's
interface changes. Chromium expects a call to
`NativeDesktopMediaList::StartUpdating` with an implementation of
`DesktopMediaListObserver` for delegated capturers like PipeWire. This
interface allows listening to user permission events and listing
sources only after the user has made a choice on the permission dialog.

The interface has been implemented by an inner class to allow listening
to screen and window capture permissions concurrently using two
instances of the class. A patch that was resetting the capturer on the
first refresh has been changed to exclude PipeWire. PipeWire capturer
object will follow the lifecycle of `NativeDesktopMediaList`, as is the
case in Chromium.

Fixes #37463

* fix: wait for thumbnails from PipeWire when necessary

The PipeWire stream starts after the dialog is dismissed. If the sources
are listed immediately afterwards, the thumbnail may not have been
generated by that time. Explicitly wait for both thumbnail generation
and a selection on the source dialog before listing sources.
2023-07-11 10:21:11 +02:00
..
app chore: remove unused std includes (#38767) 2023-06-14 11:07:18 -07:00
browser fix: use StartUpdating method for PipeWire capturer (#38833) 2023-07-11 10:21:11 +02:00
common fix: set prototype names on gin::Constructible classes (#39006) 2023-07-10 11:49:20 +02:00
renderer fix: child window may have opener removed (#38910) 2023-06-26 17:04:54 -04:00
services/node chore: remove unused std includes (#38767) 2023-06-14 11:07:18 -07:00
utility chore: remove unused std includes (#38767) 2023-06-14 11:07:18 -07:00