- Nov 13, 2020
-
-
George Kiagiadakis authored
This is an attempt to unclutter the API of WpProxy and split functionality into smaller pieces, making it easier to work with. In this new class layout, we have the following classes: - WpObject: base class for everything; handles activating | and deactivating "features" |- WpProxy: base class for anything that wraps a pw_proxy; | handles events from pw_proxy and nothing more |- WpGlobalProxy: handles integration with the registry All the other classes derive from WpGlobalProxy. The reason for separating WpGlobalProxy from WpProxy, though, is that classes such as WpImplNode / WpSpaDevice can also derive from WpProxy now, without interfacing with the registry. All objects that come with an "info" structure and have properties and/or params also implement the WpPipewireObject interface. This provides the API to query properties and get/set params. Essentially, this is implemented by all classes except WpMetadata (pw_metadata does not have info) This interface is implemented on each object separately, using a private "mixin", which is a set of vfunc implementations and helper functions (and macros) to facilitate the implementation of this interface. A notable difference to the old WpProxy is that now features can be deactivated, so it is possible to enable something and later disable it again. This commit disables modules, tests, tools, etc, to avoid growing the patch more, while ensuring that the project compiles.
-
- Jun 02, 2020
-
-
George Kiagiadakis authored
they are not useful anymore because we hijack priv->info from the impl subclass, so that it points to the impl info struct, and therefore the base implementations work just fine
-
- May 25, 2020
-
-
George Kiagiadakis authored
+ rename FEATURE_CONTROLS to FEATURE_PROPS + add accessor for the standard spa_param_info (info->params) + hide the low-level params API that nobody uses
-
- May 12, 2020
-
-
George Kiagiadakis authored
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.
-
- May 05, 2020
-
-
George Kiagiadakis authored
-
George Kiagiadakis authored
-
- Apr 22, 2020
-
-
George Kiagiadakis authored
-
- Apr 21, 2020
-
-
Julian Bouzas authored
-
Julian Bouzas authored
-
George Kiagiadakis authored
+ add the useful _find_proxy() method
-
- Apr 01, 2020
-
-
George Kiagiadakis authored
-
- Mar 31, 2020
-
-
George Kiagiadakis authored
This feature enables the caching of WpEndpointStream objects inside WpEndpoint, making information about streams readily accessible to the user of an endpoint
-
- Mar 29, 2020
-
-
George Kiagiadakis authored
* 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)
-
- Feb 19, 2020
-
-
George Kiagiadakis authored
-
- Feb 12, 2020
-
-
George Kiagiadakis authored
-
- Jan 22, 2020
-
-
George Kiagiadakis authored
-
- Jan 16, 2020
-
-
George Kiagiadakis authored
-
- Dec 11, 2019
-
-
George Kiagiadakis authored
-
George Kiagiadakis authored
heavily based on the WpSession implementation
-
George Kiagiadakis authored
to avoid name clashing with the upcoming WpEndpoint interface that is going to be the common interface of Wp{Proxy,Exported}Endpoint
-
- Dec 04, 2019
-
-
Julian Bouzas authored
-
Julian Bouzas authored
-
Julian Bouzas authored
-
- Nov 13, 2019
-
-
George Kiagiadakis authored
* rework how global objects are stored in the core * rework how users get notified about global objects and proxies of remote global objects The purpose of this change is to have a class that can manage objects that are registered in the core or signalled through the registry. This object can declare interest on certain types of global objects and only keep & signal those objects that it is interested in. Additionally, it can prepare proxy features and asynchronously deliver an 'objects-changed' signal, which is basically telling us that the list of objects has changed. This is useful to simplify port proxies management in WpAudioStream. Now the stream object can declare that it is interested in ports that have "node.id" == X and the object manager will only maintain a list of those. Additionally, it will emit the 'objects-changed' signal when the list of ports is complete, so there is no reason to do complex operations and core syncs in the WpAudioStream class in order to figure out when the list of ports is ready. As a side effect, this also reduces resource management. Now we don't construct a WpProxy for every global that pipewire reports; we only construct proxies when there is interest in them! Another interesting side effect is that we can now register an object manager at any point in time and get immediately notified about remote globals that already exist. i.e. when you register an object manager that is interested in nodes, it will be immediately notified about all the existing nodes in the graph. This is useful to avoid race conditions between connecting the signal and objects beting created in pipewire
-
- Nov 06, 2019
-
-
Julian Bouzas authored
-
- Aug 27, 2019
-
-
Julian Bouzas authored
-
- Jul 10, 2019
-
-
Julian Bouzas authored
-
- Jun 28, 2019
-
-
Julian Bouzas authored
-
- Jun 24, 2019
-
-
Julian Bouzas authored
-
- Jun 18, 2019
-
-
George Kiagiadakis authored
-
George Kiagiadakis authored
+ add a method to retrieve the core + change the register function to not require the core as a parameter
-
- May 31, 2019
-
-
George Kiagiadakis authored
-
- May 26, 2019
-
-
George Kiagiadakis authored
-
- May 24, 2019
-
-
George Kiagiadakis authored
This changes the registration point to be the endpoint and not the session manager, as it seems easier to implement (the implementation will not need to keep a pointer to the session manager around)
-
- May 21, 2019
-
-
George Kiagiadakis authored
* Make streams a GVariant array, for future-proofness * Add API for controls (volume, mute, brightness, contrast, etc...) * Remove API for profiles (it's not well-thought; may be re-added in the future)
-
- May 17, 2019
-
-
George Kiagiadakis authored
After discussing things at the AGL May 2019 F2F meeting and reflecting on the initial design of WirePlumber, it became clear that it needed a fresh start.
-