Commit graph

1352 commits

Author SHA1 Message Date
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
George Kiagiadakis
87741e39ec s/metadatas/metadata/g
data is already plural
2021-06-18 10:44:24 +03:00
George Kiagiadakis
a57647769a metadata: filter for the "default" metadata object in all places where we use it
there can be more metadata objects around...
2021-06-18 10:39:47 +03:00
George Kiagiadakis
b8979e7434 wp-uninstalled.sh: don't shift after -b, there's a generic shift below 2021-06-16 19:45:36 +03:00
George Kiagiadakis
48ef823318 meson: avoid source_root(), as it fails when wireplumber is a subproject 2021-06-16 19:44:43 +03:00
George Kiagiadakis
1075d23fab lib: fix some issues found by coverity 2021-06-15 17:43:22 +03:00
George Kiagiadakis
63282707ba README: add coverity badge 2021-06-15 15:48:13 +03:00
George Kiagiadakis
b0f35427a9 coverity: use gzip instead of lzma to compress the coverity data
lzma is not available in the fedora image that we use... what was I thinking?
2021-06-15 15:26:43 +03:00
George Kiagiadakis
b7294e0695 coverity: use a regexp that nukes all the glib enumerator deprecation macros
coverity can't cope with enum declarations like:
  G_ENUM_FOO GLIB_DEPRECATED_ENUMERATOR_IN_2_26 = N,

... so make sure all these are removed
2021-06-15 15:03:09 +03:00
George Kiagiadakis
41d8610a40 ci: disable more things from the pipewire build 2021-06-15 13:29:24 +03:00
George Kiagiadakis
95c8f0ec48 ci: add support for coverity, based on pipewire's gitlab-ci.yml 2021-06-15 12:30:21 +03:00
George Kiagiadakis
863c2d496a meson: bump glib requirement to 2.62 as we are already using 2.62 API 2021-06-15 12:04:08 +03:00
George Kiagiadakis
6c592f3322 meson: add glib version required/allowed checks 2021-06-15 12:00:43 +03:00
George Kiagiadakis
4af7e2bd68 release 0.4.0 2021-06-10 19:42:04 +03:00
George Kiagiadakis
950c358180 create-item: handle all kinds of Audio/Video & Stream nodes
And be careful not to handle nodes created by si-audio-endpoint,
by using a specific property for that.

Also, use Audio/{Source,Sink}/Virtual as the media class of null sinks
created by si-audio-endpoint, it sounds more appropriate.

Fixes #34
2021-06-10 16:41:01 +03:00
George Kiagiadakis
558ab50367 si-standard-link: treat endpoints as devices when linking stream<->endpoint
This avoids reconfiguring endpoint nodes when re-linking streams
to their endpoint after having been corked by the policy.

This is not ideal, the logic here needs some refinement.
2021-06-10 14:53:09 +03:00
George Kiagiadakis
cead4dffb8 config: document the duck.level policy property 2021-06-10 14:53:09 +03:00
George Kiagiadakis
4cdfeb9c32 scripts: change debug level for some messages 2021-06-10 14:53:08 +03:00
George Kiagiadakis
2668900e18 lua: improve the object:activate() callback to report errors
There is now a second param to the callback that is an error string,
if any error happened
2021-06-10 14:53:08 +03:00
George Kiagiadakis
801ac7aa1a wplua: add a wplua_checkclosure() helper function 2021-06-10 14:53:08 +03:00
George Kiagiadakis
b6a5750595 Revert "tests: enable G_SLICE=debug-blocks in all tests"
This breaks the valgrind test setup, as this G_SLICE overrides
G_SLICE=always-malloc from valgrind_env

This reverts commit a0d0069f18.
2021-06-10 14:52:30 +03:00
George Kiagiadakis
606a9765d6 meson: add '--keep-debuginfo=yes' to the valgrind command line
ensures that we get debug symbols from modules printed correctly
2021-06-09 15:43:08 +03:00
George Kiagiadakis
7355215cf1 pipewire-object: change params-changed signal to take a string param name
To be consistent with the rest of the API where strings are used
to identify param types
2021-06-09 13:29:34 +03:00
George Kiagiadakis
a0d0069f18 tests: enable G_SLICE=debug-blocks in all tests
This can catch allocation mistakes in the g_slice allocator
2021-06-09 12:21:56 +03:00
George Kiagiadakis
82c054f1bd meson: use environment() objects to define env for tests
it's just a nicer syntax
2021-06-09 12:03:14 +03:00
George Kiagiadakis
b39514a455 meson: add a test setup to run tests under valgrind 2021-06-09 11:55:07 +03:00
George Kiagiadakis
86fde56ddd daemon/wpexec: standardize exit codes based on sysexits.h 2021-06-08 20:39:36 +03:00
George Kiagiadakis
5ef8faa730 daemon: replace the exit_message with direct message printouts
and use fprintf() for fatal errors, to make sure they are shown
2021-06-08 20:39:36 +03:00
George Kiagiadakis
aa618e99cb wpexec: force the log level to be at least 1 and use fprintf() for local errors
pipewire's client.conf sets the default log level to 0, which is not
good for wpexec, as lua runtime errors are reported as warnings currently.

Also, let's use fprintf() for local cli errors to make sure they get printed
even if the log level is 0
2021-06-08 20:39:36 +03:00
George Kiagiadakis
31f56c7be5 daemon: exit with 0 both in case of a signal and in case of disconnection
systemd stops wireplumber with SIGTERM and this should exit gracefully.
if wireplumber is started by other means, it may just stop when pipewire
stops... that's also fine
2021-06-08 20:39:36 +03:00
Julian Bouzas
0f01c8b6da tests: si-standard-link: remove unneeded core syncs 2021-06-08 13:23:44 -04:00
Julian Bouzas
85a7f01cb6 tests: common: make sure no events are pending before destroying core 2021-06-08 13:23:39 -04:00
George Kiagiadakis
f9767d19a6 lib: add struct paddings to be able to maintain ABI compatibility
Aim for 8 pointers on each struct, wich exceptions:
- 12 pointers for already crowded/important ones
- 4 pointers for empty ones that are used for proxies; we are
  unlikely to add any virtual methods on these classes ever
2021-06-08 17:38:14 +03:00
George Kiagiadakis
72297e0909 docs: set breathe_default_members to get struct members to show up in the docs
Otherwise structs do not have any members shown by default.
This was accidentally removed in an older commit.
2021-06-08 17:14:54 +03:00
George Kiagiadakis
06c0e44609 docs: remove :project: annotations for breathe
there is a breathe_default_project in conf.py.in that sets this
2021-06-08 17:12:26 +03:00
Julian Bouzas
83e50396ee pw-object-mixin: ignore set param on already destroyed objects 2021-06-08 09:08:13 -04:00
Julian Bouzas
21e73141c6 proxy: destroy pw_proxy if bind_error is called 2021-06-08 09:08:13 -04:00
George Kiagiadakis
0a987ea367 restore-stream: implement storing/restoring of target.node metadata
Closes #33
2021-06-08 13:40:13 +03:00
George Kiagiadakis
892129bd08 lua: implement metadata:set() 2021-06-08 13:40:13 +03:00
George Kiagiadakis
77454243bc lua: fix refcounting of metadata iterator
wplua_push* takes a full ref
2021-06-08 13:40:13 +03:00
Julian Bouzas
7d28027f9b wplua: fix memleak when converting GVariant to Lua 2021-06-07 11:33:21 -04:00
Julian Bouzas
8ba6439dd4 m-default-nodes-api: free default nodes when disabling plugin 2021-06-07 11:33:21 -04:00
Julian Bouzas
464f1de641 m-default-nodes: free default nodes when disabling plugin 2021-06-07 11:33:21 -04:00
Julian Bouzas
fc8cc09654 global-proxy: fix leak when getting global properties 2021-06-07 11:33:21 -04:00
Julian Bouzas
a12c41aca1 spa-pod: check if pod is valid before _parser_can_collect
Spotted with clang-tidy, avoids possible segfault if pod is NULL.
2021-06-07 11:33:21 -04:00
George Kiagiadakis
80fad18e3d lua: remove hack around WpObjectInterest since we can _ref() it now 2021-06-07 18:01:49 +03:00
George Kiagiadakis
ac5c2ebbba object-interest: remove unused _copy() method
object-interest is now ref-counted, so we can use _ref()
2021-06-07 17:56:32 +03:00
George Kiagiadakis
12f9e621e1 default-routes: use a constraint to check if device.name is present 2021-06-07 17:47:42 +03:00
George Kiagiadakis
2af0641a8b default-routes: fix storing dev_info 2021-06-07 17:47:42 +03:00
George Kiagiadakis
2e56aeb44a scripts: initial restore-stream implementation
Related to #33
2021-06-07 17:47:42 +03:00