Find a file
George Kiagiadakis 8e5448fd0c si-audio-adapter/endpoint: do not sync() in loops, use ports-changed instead
Calling sync() in loops may end up looping forever if the operating
system's scheduling allows pipewire to reply to this sync() before
wireplumber's event loop has a chance to become idle.

In order for the new ports to appear, the object manager that monitors
them needs to emit "objects-changed", which only ever happens in an
idle callback. If the reply to sync() arrives before the idle callback,
it gets prioritized and processed, which causes another sync(), and so on...

Since setting PortFormat in the adapter always changes the ports,
watching for "ports-changed" feels like a better solution. Still,
there is more room for improvement.
2021-06-18 15:14:03 +03:00
docs meson: avoid source_root(), as it fails when wireplumber is a subproject 2021-06-16 19:44:43 +03:00
lib lib: fix some issues found by coverity 2021-06-15 17:43:22 +03:00
modules si-audio-adapter/endpoint: do not sync() in loops, use ports-changed instead 2021-06-18 15:14:03 +03:00
src s/metadatas/metadata/g 2021-06-18 10:44:24 +03:00
subprojects wptoml: remove, it's not used anymore 2021-02-03 17:16:51 +02:00
tests Revert "tests: enable G_SLICE=debug-blocks in all tests" 2021-06-10 14:52:30 +03:00
.editorconfig editorconfig: remove obsolete entry and add python script rules 2021-05-26 09:36:41 +03:00
.gitignore gitignore: remove obsolete entry 2021-05-26 09:38:03 +03:00
.gitlab-ci.yml coverity: use gzip instead of lzma to compress the coverity data 2021-06-15 15:26:43 +03:00
LICENSE LICENSE: update copyright years 2021-05-26 09:33:18 +03:00
Makefile meson: add a test setup to run tests under valgrind 2021-06-09 11:55:07 +03:00
meson.build meson: bump glib requirement to 2.62 as we are already using 2.62 API 2021-06-15 12:04:08 +03:00
meson_options.txt meson: add a test setup to run tests under valgrind 2021-06-09 11:55:07 +03:00
NEWS.rst release 0.4.0 2021-06-10 19:42:04 +03:00
README.rst README: add coverity badge 2021-06-15 15:48:13 +03:00
wp-uninstalled.sh wp-uninstalled.sh: don't shift after -b, there's a generic shift below 2021-06-16 19:45:36 +03:00

WirePlumber
===========

.. image:: https://gitlab.freedesktop.org/pipewire/wireplumber/badges/master/pipeline.svg
   :alt: Pipeline status

.. image:: https://scan.coverity.com/projects/21488/badge.svg
   :alt: Coverity Scan Build Status

.. image:: https://img.shields.io/tokei/lines/gitlab.freedesktop.org/pipewire/wireplumber
   :alt: Lines of code

.. image:: https://img.shields.io/badge/license-MIT-green
   :alt: License

.. image:: https://img.shields.io/badge/dynamic/json?color=informational&label=tag&query=%24%5B0%5D.name&url=https%3A%2F%2Fgitlab.freedesktop.org%2Fapi%2Fv4%2Fprojects%2F2941%2Frepository%2Ftags
   :alt: Tag

WirePlumber is a modular session / policy manager for
`PipeWire <https://pipewire.org>`_ and a GObject-based high-level library
that wraps PipeWire's API, providing convenience for writing the daemon's
modules as well as external tools for managing PipeWire.

The WirePlumber daemon implements the session & policy management service.
It follows a modular design, having plugins that implement the actual
management functionality.

The WirePlumber Library provides API that allows you to extend the WirePlumber
daemon, to write management or status tools for PipeWire
(apps that don't do actual media streaming) and to write custom session managers
for embedded devices.

Documentation
-------------

The latest version of the documentation is available online
`here <https://pipewire.pages.freedesktop.org/wireplumber/>`_