Commit graph

80 commits

Author SHA1 Message Date
George Kiagiadakis
82b598edbf tests/si-*: use new WpObjectManager API 2020-05-04 16:29:36 +03:00
George Kiagiadakis
bd9ae98c9b tests/si-softdsp-endpoint: fix the tests to reflect the latest changes 2020-05-04 16:04:37 +03:00
Julian Bouzas
fc864eb2b3 tests: add export test for si-audio-softdsp-endpoint 2020-05-03 19:54:31 +03:00
Julian Bouzas
791e9170aa si-interfaces: transfer full when returning from _get_stream_parent_endpoint 2020-05-03 19:54:31 +03:00
Julian Bouzas
e810d32719 tests: add basic test for si-audio-softdsp-endpoint 2020-05-03 19:54:31 +03:00
George Kiagiadakis
bccb160bc2 port some more deprecated object-manager calls 2020-05-03 19:49:21 +03:00
George Kiagiadakis
db40a593b3 lib: implement WpObjectInterest 2020-05-01 19:21:08 +03:00
George Kiagiadakis
444814d753 tests: common: add common callbacks based on the si-simple-node-endpoint test 2020-04-23 17:54:49 +03:00
George Kiagiadakis
1c74a83a5c tests: si-simple-node-endpoint: add export test 2020-04-23 17:25:57 +03:00
George Kiagiadakis
c1c91ce7d0 tests: add basic test for si-simple-node-endpoint 2020-04-23 15:49:32 +03:00
George Kiagiadakis
fe12e8ab6f tests: enable WIREPLUMBER_DEBUG and set WIREPLUMBER_MODULE_DIR by default
+ better logs by default
+ allow loading modules in tests
2020-04-22 18:39:11 +03:00
George Kiagiadakis
1d157f016a tests: move common fixture code to WpBaseTestFixture 2020-04-22 18:39:03 +03:00
George Kiagiadakis
4eaa99a698 tests: collect common helpers in the 'common' directory 2020-04-22 17:13:33 +03:00
Julian Bouzas
0045fe03c9 proxy: add set and get control vmethods, and remove them from sub-classes 2020-04-21 16:11:05 -04:00
Julian Bouzas
e08af1baa3 tests: fix redefined warnings when building spa-props test 2020-04-21 16:11:05 -04:00
Julian Bouzas
cfbcb5eca3 proxy: use WpSpaPod instead of struct spa_pod in public API 2020-04-21 16:11:05 -04:00
Julian Bouzas
fe4bef8bbc spa-pod: fix constness and add get_object_type_name and get_choice_type_name 2020-04-21 16:11:05 -04:00
Julian Bouzas
058f8ae1e0 spa-pod: add wp_spa_pod_equal API 2020-04-21 09:38:36 -04:00
George Kiagiadakis
fbddccd5bf tests: session-item: add basic export operation tests 2020-04-16 17:57:21 +03:00
George Kiagiadakis
49b63b6045 session-item: refactor export to use a process similar to activate
+ expose the export transition in the session item class
+ make the export-related flags immutable
+ add an export error flag
+ update and improve documentation
2020-04-16 17:38:31 +03:00
George Kiagiadakis
441a778b2e session-item: introduce a rollback() virtual method
+ replace calling execute_step(..., STEP_ERROR) with rollback
+ implement deactivate internally using rollback

This unifies deactivation steps, which are common between deactivate()
and calling execute_step() with WP_TRANSITION_STEP_ERROR at the
end of a failed activation transition.
2020-04-16 13:18:21 +03:00
George Kiagiadakis
6b51e5842c tests: add session-item unit test 2020-04-16 11:55:23 +03:00
George Kiagiadakis
914e2b84df tests: remove the global G_LOG_DOMAIN to avoid issues with including code from elsewhere
including wp/spa-props.c currently re-defines G_LOG_DOMAIN
in the spa-props.c unit test
2020-04-15 18:40:52 +03:00
George Kiagiadakis
9ca342f89f debug: update all library code to use the new debug system
+ enable the new log writer on the executables
+ enable structured logging in the tests
2020-04-14 18:31:17 +03:00
George Kiagiadakis
2ac6210b6d Merge branch 'master' into next 2020-04-14 15:17:01 +03:00
Julian Bouzas
8c209ecf48 lib: add spa pod API 2020-04-13 13:32:04 -04:00
Julian Bouzas
b79fcf9418 lib: add spa type API 2020-04-09 13:09:57 -04:00
George Kiagiadakis
4a1a19d7cd session: add FEATURE_ENDPOINTS, a feature to cache endpoint proxies 2020-04-01 13:38:39 +03:00
George Kiagiadakis
79a39e98c9 transition: call execute_step() with _STEP_ERROR in error conditions
This allows the implementation to rollback changes, cancel jobs, etc
2020-03-31 16:11:08 +03:00
George Kiagiadakis
405e8ba0d5 session-item / endpoint: implement exporting a WpSiEndpoint
* introduces API to export session items
* introduces small changes in the WpSiEndpoint & WpSiStream
  interfaces to make it nicer to work with
* ports WpImplEndpoint to use PW_TYPE_INTERFACE_Endpoint
  to export. Depends on:
  https://gitlab.freedesktop.org/pipewire/pipewire/-/merge_requests/246
  (was merged after 0.3.2)
2020-03-29 15:18:20 +03:00
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
daa8091666 modules: add monitor dbus device reservation API with unit tests 2020-03-20 14:01:20 -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
64f131cbdd tests: implement begin_fade vmethod on WpFakeEndpoint 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
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
266b5422f2 tests: config-static-nodes: run the main loop in the same thread 2020-02-26 11:14:52 -05:00
Julian Bouzas
46aaa9ef4f tests: fix memleak when destroying test server 2020-02-25 15:40:39 -05: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
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
George Kiagiadakis
f7a0e710a5 lib: remove wp_proxy_sync in favor of wp_core_sync
They are equivalent, there is no real benefit in having both
2020-01-22 18:07:16 +02:00
Julian Bouzas
a9ac1fdc06 update to the latest pipewire API 2020-01-13 15:07:08 -05:00