Commit Graph

490 Commits

Author SHA1 Message Date
George Kiagiadakis
5f169d190f lib: implement a new WpTransition class
This is an asynchronous operation class, like GTask,
but it is made to execute several operations underneath,
using a state machine, instead of just a single operation.
2020-03-29 15:02:59 +03:00
Julian Bouzas
c2dfec2184 monitor: add dbus-reservation flag 2020-03-20 14:01:22 -04:00
Julian Bouzas
8887cce5b4 modules: add monitor reservation data API 2020-03-20 14:01:22 -04:00
Julian Bouzas
daa8091666 modules: add monitor dbus device reservation API with unit tests 2020-03-20 14:01:20 -04:00
Julian Bouzas
9c44900e68 config-policy: fix endpoint refcount issues 2020-03-17 12:06:21 -04:00
Julian Bouzas
8adde3df75 tests: don't load unneeded audioconvert plugin in config-policy tests 2020-03-10 12:50:27 -04:00
Julian Bouzas
91eb754b96 softdsp-endpoint: simplify and remove object_safe_new_finish function 2020-03-03 13:27:18 -05:00
Julian Bouzas
268f97e7bc docs: add test examples for pulseaudio, jack and video clients 2020-03-03 13:27:18 -05:00
Julian Bouzas
d9abbf811f config: make default configuration for desktop and create a separate one for automotive 2020-03-03 13:27:18 -05:00
Julian Bouzas
8646a3b003 modules: add WpVideoEndpoint sub-class to handle video 2020-03-03 13:27:15 -05:00
Julian Bouzas
60bdea1ed6 modules: add jack-device module 2020-03-03 11:14:13 -05:00
Julian Bouzas
e4d895902c config-static-nodes: skip devices without WP_PROXY_FEATURE_INFO 2020-02-28 10:59:42 -05:00
Julian Bouzas
d3df321e3d config-endpoint-context: skip nodes with null media-class 2020-02-28 10:48:43 -05:00
George Kiagiadakis
ca8d100b3f meson: temporarily add check to conditionally enable the fade functionality
and in case it's missing, also #define some things to make compilation work,
since this is only available in a pipewire branch right now
2020-02-28 13:25:35 +02:00
Julian Bouzas
a861e47643 config-policy: fade in/out when streams are linked/unlinked 2020-02-27 08:39:15 -05:00
Julian Bouzas
64f131cbdd tests: implement begin_fade vmethod on WpFakeEndpoint 2020-02-27 08:39:15 -05:00
Julian Bouzas
8c674b9f69 base-endpoint: add wp_base_endpoint_begin_fade API 2020-02-27 08:39:15 -05:00
Julian Bouzas
b1d03cd637 stream: add wp_audio_stream_begin_fade API 2020-02-27 08:39:15 -05:00
Julian Bouzas
620f95b628 core: add source nullable parameter in _idle_add and _timeout_add APIs 2020-02-27 08:39:10 -05:00
Julian Bouzas
5abdc2fb9e core: add wp_core_timeout_add API 2020-02-27 08:37:15 -05:00
Julian Bouzas
eaea2156cb stream: create an audio-fade-source control node if there is a control port 2020-02-27 08:37:15 -05:00
Julian Bouzas
16cdac6dd6 convert/adapter: enable control port if input direction 2020-02-27 08:37:15 -05:00
Julian Bouzas
2439cab55f convert: use factory name SPA macro 2020-02-27 08:37:15 -05:00
Julian Bouzas
8aa695770c tests: config-policy: run the main loop in the same thread 2020-02-26 15:51:58 -05:00
Julian Bouzas
3fd65ac964 tests: config-endpoints: run the main loop in the same thread 2020-02-26 11:37:23 -05:00
Julian Bouzas
fefa4b9191 config-endpoint-context: add _get_length API 2020-02-26 11:36:09 -05:00
Julian Bouzas
266b5422f2 tests: config-static-nodes: run the main loop in the same thread 2020-02-26 11:14:52 -05:00
Julian Bouzas
49716f603c config-static-nodes-context: add _get_length API 2020-02-26 11:05:02 -05:00
Julian Bouzas
46aaa9ef4f tests: fix memleak when destroying test server 2020-02-25 15:40:39 -05:00
Julian Bouzas
8e719eb47c config-static-nodes: use WP_PROXY_FEATURES_STANDARD when agumenting static nodes
This will solve a possible race condition in the unit test when destroying the
autotestsrc proxy while its node_event_info is being called.
2020-02-25 09:57:02 -05:00
George Kiagiadakis
d4973363ac lib: add extensive API documentation 2020-02-19 10:43:07 +02:00
George Kiagiadakis
77bb816b52 registry: change _prepare_new_global() to return the global in a less awkward way
the global is stored internally and the returned ref is only useful
in the WpProxy code, not in the registry_global() event
2020-02-17 18:41:36 +02:00
George Kiagiadakis
c46a48d13f registry: hide again the WpCore struct, separate registry and core better 2020-02-17 18:31:03 +02:00
George Kiagiadakis
0b55729e06 registry: set a free func in the globals list
it doesn't matter, because we don't use it, but for the sake of readability
2020-02-17 16:43:47 +02:00
George Kiagiadakis
949100c9c0 object-manager: reorder code in object-manager.c 2020-02-14 17:19:41 +02:00
George Kiagiadakis
472d63e1b0 registry: fix internal documentation 2020-02-14 17:19:35 +02:00
George Kiagiadakis
51272907fe registry: expose tmp globals in the order they appeared on the pw registry
some code is expecting things to happen in that order...
2020-02-14 17:19:26 +02:00
George Kiagiadakis
813351bcdf registry: safely destroy proxy when its initial augment is still in progress
... in case the global is removed from the registry before
the initial augment completes
2020-02-14 17:19:15 +02:00
George Kiagiadakis
269b9e1998 registry: use a temporary globals list
When a new global is created, it is not certain
if the registry global event or the proxy bound event will
be fired first. In order to make sure we associate all
proxies to their WpGlobals correctly, we now wait a core sync
before exposing globals to the object managers, so that in case
the implementation proxy receives the bound event after the
registry creates the WpGlobal, we can make sure to use this
proxy instead of constructing a new one through the object managers
2020-02-14 17:18:58 +02:00
George Kiagiadakis
87cc64b40b module-session: export session after the core is connected
wp_exported_export() used to do that internally, but it's cleaner
to do it this way now
2020-02-14 17:18:58 +02:00
George Kiagiadakis
753e708544 object-manager: refactor to be able to track locally created proxies
There are 3 kinds of WpProxy objects:
 * the ones that are created as a result of binding a global
   from the registry
 * the ones that are created as a result of calling into a remote
   factory (wp_node_new_from_factory, etc...)
 * the ones that are a local implementation of an object
   (WpImplNode, etc...) and are exported

Previously the object manager was only able to track the first kind.
With these changes we can now also have globals associated with
WpProxies that were created earlier (and caused the creation of the global).
This saves some resources and reduces round-trips (in case client
code wants to change properties of an object that is locally
implemented, it shouldn't need to do a round-trip through the server)
2020-02-14 17:12:23 +02:00
George Kiagiadakis
a92e1a64ec global & object-manager: use GType instead of the pipewire type 2020-02-12 14:15:51 +02:00
George Kiagiadakis
467d745082 lib: remove WpExported 2020-02-12 11:30:49 +02:00
George Kiagiadakis
c9cab2cd53 endpoint: refactor into WpEndpoint & WpImplEndpoint 2020-02-12 11:30:21 +02:00
George Kiagiadakis
8e50fab112 session: refactor into WpSession & WpImplSession 2020-02-12 11:28:02 +02:00
George Kiagiadakis
9330208ada proxy/core: refactor object creation
* core no longer exposes create_remote/local_object
* node, device & link have constructor methods
  to enable the create_remote_object functionality
* added WpImplNode to wrap pw_impl_node and allow creating
  "local" node instances
* added WpSpaDevice to wrap spa_device and allow creating
  "local" device instances
* exporting objects in all cases now happens by requesting
  FEATURE_BOUND from the proxy, eliminating the need for WpExported
* replaced WpMonitor by new, simpler code directly in module-monitor
* the proxy type lookup table in WpProxy is gone, we now
  use a field on the class structure of every WpProxy subclass
  and iterate through all the class structures instead; this is
  more flexible and extensible
2020-02-11 11:07:44 +02:00
George Kiagiadakis
d8ae151aba proxy: replace global-id with bound-id
+ use the pw_proxy API to find the bound id instead
of relying on WpGlobal

This has the advantage that it works also for exported
objects and for objects that have been created by calling
into a remote factory (such as the link-factory), so we can
now know the global id of all proxies, not only the ones
that have been created by the registry.
2020-02-10 18:58:41 +02:00
George Kiagiadakis
c671b0faca lib: drop the proxy- prefix from client, device, link, port & node 2020-01-22 19:46:17 +02:00
George Kiagiadakis
5c47f1df2c proxy: unify common info/params API in the WpProxy base class 2020-01-22 18:30:44 +02:00
George Kiagiadakis
6f2844ac13 proxy: remove interface-quark
This is not used anymore. It was useful when we were using it as
a detail in the global-added signal, but that is gone now.
2020-01-22 18:07:16 +02:00