Commit graph

1165 commits

Author SHA1 Message Date
George Kiagiadakis
a2b84e27d1 session: rename the default source/sink controls to have shorter names
+ use a more correct naming scheme to match the one from Spa
+ remove the default video source, since we now use a different
 session for video
2020-05-14 17:31:24 +03:00
George Kiagiadakis
5c8a462a4a debug: use levels 1-5 in WIREPLUMBER_DEBUG
This makes WIREPLUMBER_DEBUG behave just like PIPEWIRE_DEBUG.
Same levels, same syntax, easier for users.

ERROR & CRITICAL are always printed, as they should; there is no point
in disabling them, since:
- ERRORs are always fatal and should never ever happen
- CRITICALs are assertion failures and indicate bugs that need to be fixed
2020-05-14 17:00:55 +03:00
George Kiagiadakis
a45d47f519 debug: shorten a bit the length of the messages
* use a short level name, like pipewire does
* color the timestamp to compensate for the loss of the visible level name
* use 18 chars for the category
2020-05-14 16:37:38 +03:00
George Kiagiadakis
5eecc5b68a object-manager: remove deprecated API 2020-05-14 16:24:34 +03:00
George Kiagiadakis
1e4a79c80e registry: do not expose early removed globals to object managers 2020-05-14 10:27:03 +03:00
George Kiagiadakis
59b47e6b42 wireplumber-cli: actually show video endpoints 2020-05-13 20:21:22 +03:00
George Kiagiadakis
9b0417cb68 core: remove warning on the error callback
libpipewire already prints this, so we get it duplicated on the log
2020-05-13 19:56:55 +03:00
George Kiagiadakis
d89c4ecd94 object-manager: don't try to install if there is no core
This happens when the daemon fails to connect and the
not installed object managers try to get installed, but
the weak ref to the core is already gone
2020-05-13 19:52:25 +03:00
George Kiagiadakis
386c75f3b9 wireplumber-cli: update to more recent API and fix some issues 2020-05-13 19:29:08 +03:00
George Kiagiadakis
151480f3e4 object-manager: wait until globals appear before emitting "installed"
object managers that are registered a bit early (such as the one in
wireplumber-cli) have no use if they are declared as installed before
any globals appear. After the initial registry startup, there should
be at least 1 global, the core (id=0), so even if this client has
no access to any object, the object manager should be able to
finish its installation successfully
2020-05-13 19:29:08 +03:00
Julian Bouzas
27ff8d5ef2 modules: port config-static-nodes to use WpPlugin 2020-05-13 11:21:45 -04:00
Julian Bouzas
faa9719f53 modules: port config-policy to use WpPlugin 2020-05-13 11:21:45 -04:00
George Kiagiadakis
1aefda4128 daemon: activate plugins in an idle callback to avoid side-effects
the on_sessions_exported callback runs from within the context
of export_tmp_globals in object-manager.c and when plugins register
more object managers, it modifies the object managers list that
export_tmp_globals is iterating over, making things behave really weird
2020-05-13 18:18:52 +03:00
George Kiagiadakis
f6dacf7cf7 lib: remove WpFactory (no longer used) 2020-05-13 15:29:17 +03:00
George Kiagiadakis
68223e0ea3 tests: add unit test for WpCore disconnection 2020-05-13 15:21:10 +03:00
George Kiagiadakis
8e87bd323c core: fix disconnecting when pipewire quits 2020-05-13 15:20:26 +03:00
Julian Bouzas
21f6309621 config-endpoint: destroy the endpoint when its associated node is destroyed 2020-05-12 13:39:58 -04:00
Julian Bouzas
5ea7e6fc0b object-manager: emit the object-removed signal after the object is removed 2020-05-12 13:37:36 -04:00
George Kiagiadakis
7149745beb daemon: activate all available plugins after the sessions are ready 2020-05-12 18:18:24 +03:00
George Kiagiadakis
d13e411da3 lib: use WP_PROXY_FEATURE_LAST with a shift when declaring additional features
Features are flags, therefore we must NEVER use them without a shift,
otherwise bad mistakes happen, like the previous mistake of declaring
WP_SESSION_FEATURE_LINKS as the number after WP_SESSION_FEATURE_ENDPOINTS,
which ended up being (WP_SESSION_FEATURE_ENDPOINTS | WP_PROXY_FEATURE_PW_PROXY)
and it was always becoming available together with the ENDPOINTS feature.
2020-05-12 18:18:24 +03:00
George Kiagiadakis
e9c51653af modules: port config-endpoint to use WpPlugin 2020-05-12 18:18:24 +03:00
George Kiagiadakis
e63bf86995 lib: add a WpPlugin class
This serves as a base class for daemon plugins, which are implemented
inside modules
2020-05-12 18:18:21 +03:00
George Kiagiadakis
bfe76bf1d1 debug: honor WIREPLUMBER_DEBUG and ignore PIPEWIRE_DEBUG in pw_log
And also provide a way to disable this integration at runtime to
get pipewire's log back, with WIREPLUMBER_NO_PW_LOG=1
2020-05-12 18:16:55 +03:00
George Kiagiadakis
17c1eb3fac debug: downgrade SPA error & warn -> GLib warn & msg
The GLib error level is fatal, but pipewire doesn't use it that way.
Also, the GLib critical level is meant only for programming errors
(assertions) and not for runtime errors. warn & msg levels really
fit well with the error & warn, as they are being used in pipewire
currently.
2020-05-12 18:16:55 +03:00
Julian Bouzas
30ecff5a51 lib: remove deprecated base endpoint and policy APIs 2020-05-12 10:03:31 -04:00
Julian Bouzas
6044b23aed modules: refactor config-policy to use the new session item API 2020-05-12 10:03:29 -04:00
Julian Bouzas
4b7bc92e4b modules: remove pipewire module and move algorithms to module-si-adapter 2020-05-12 09:47:35 -04:00
Julian Bouzas
6317599477 src: config: add audio sink streams configuration 2020-05-12 09:47:35 -04:00
Julian Bouzas
7e8e6da857 si-standard-link: get the core from the stream node when its endpoint link proxy is not valid 2020-05-12 09:47:27 -04:00
Julian Bouzas
a99fa5272e si-convert: fix direction and link configuration 2020-05-11 12:47:13 -04:00
George Kiagiadakis
66a0bf6093 lib: implement a wp_init() function 2020-05-11 15:45:09 +03:00
Julian Bouzas
2e781ce607 src: config: load all session item modules 2020-05-11 12:03:43 +03:00
Julian Bouzas
104e90c98c modules: si-adapter: fix segfault when setting priority property 2020-05-11 12:03:43 +03:00
Julian Bouzas
616034174d src: main: add create-session command to create sessions when wireplumber starts 2020-05-11 12:03:43 +03:00
Julian Bouzas
af5da7a372 src: config: update default wireplumber configuration to work with new config-endpoint module 2020-05-11 12:03:43 +03:00
Julian Bouzas
17ee195902 spa-pod: rename wp_spa_pod_iterator_new to wp_spa_pod_iterate 2020-05-11 12:03:43 +03:00
Julian Bouzas
288f1f091b modules: refactor config-endpoint to use the new session item API 2020-05-11 12:03:43 +03:00
George Kiagiadakis
20708b28c7 examples: add a simple audio session management example 2020-05-11 11:40:55 +03:00
George Kiagiadakis
6537332984 si-adapter: add a config option to specify the preferred number of channels
This is mostly useful when using the adapter with audiotestsrc,
which supports an infinite number of channels. By specifying
a preference, we can limit it to the number of channels that we want.
2020-05-11 11:40:55 +03:00
George Kiagiadakis
e8e6c1d8bc algorithms: allow specifying a preferred number of channels in the format choosing algorithm 2020-05-11 11:40:55 +03:00
George Kiagiadakis
9e2aa612d8 si-adapter: return the correct stream parent when the adapter is nested 2020-05-11 11:40:55 +03:00
George Kiagiadakis
fe1ac40919 endpoint: ensure that streams are available when FEATURE_STREAMS is declared as ready 2020-05-11 09:56:06 +03:00
George Kiagiadakis
55f56fec2a session-item: remove the ACTIVATING/EXPORTING flag before the callback
It is a valid use case to do things like call wp_session_item_export()
from within the async ready callback of _activate(), and it's not
possible unless the ACTIVATING flag has been cleared first.

To do this, use a GCClosure to wrap the callback and install marshal
guards, which are called before and after the callback, to modify
the flags.
2020-05-08 19:56:08 +03:00
George Kiagiadakis
43711828ce transition: add the ability to use a GClosure instead of a GAsyncReadyCallback 2020-05-08 19:23:23 +03:00
George Kiagiadakis
63397a1ff2 core: debug core sync 2020-05-08 18:18:33 +03:00
George Kiagiadakis
11b99527b5 core: make the properties on wp_core_new to be (transfer full)
This aligns better with the general design of consuming property
objects on constructors, both in PipeWire and WirePlumber APIs
2020-05-08 17:12:31 +03:00
Eric Engestrom
80dc7723fc test/dbus-device-reservation: fix include path
The extra `../` only works if the build directory is an immediate child of the
source directory. In all the other configurations this breaks the build.

Dropping the extra `../` makes use of the `-I${SOURCE_DIR}` provided by meson.

Signed-off-by: Eric Engestrom <eric@engestrom.ch>
2020-05-08 15:16:50 +02:00
George Kiagiadakis
29c35ce8aa si-convert: fix internal link handling
* there is just one link, no need for a list
* warn if something goes wrong and don't assert
2020-05-07 17:01:27 +03:00
George Kiagiadakis
3cfd0d3dc8 si-convert: use the "reverse" port context on self for the internal links 2020-05-07 16:54:12 +03:00
George Kiagiadakis
c02bff50cd si-standard-link: add options to use different port contexts 2020-05-07 16:48:06 +03:00