wireplumber/lib/wp
George Kiagiadakis 2f3f5f8e66 lib: refactor WpProxy
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.
2020-11-13 19:54:48 +02:00
..
private lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
client.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
client.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
configuration.c configuration: fix memleak when reloading 2020-05-19 10:18:51 -04:00
configuration.h lib: add extensive API documentation 2020-02-19 10:43:07 +02:00
core.c core: wp_core_get_context -> wp_core_get_g_main_context 2020-06-16 12:53:18 +03:00
core.h core: wp_core_get_context -> wp_core_get_g_main_context 2020-06-16 12:53:18 +03:00
debug.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
debug.h debug: don't crash if an object is NULL in wp_*_object() and point it out in the log 2020-05-20 18:27:09 +03:00
defs.h lib: introduce export macros and hide all private symbols 2020-01-16 18:50:07 +02:00
device.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
device.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
endpoint-link.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
endpoint-link.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
endpoint-stream.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
endpoint-stream.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
endpoint.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
endpoint.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
error.c lib: add extensive API documentation 2020-02-19 10:43:07 +02:00
error.h lib: add extensive API documentation 2020-02-19 10:43:07 +02:00
global-proxy.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
global-proxy.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
iterator.c iterator: add a generic GPtrArray iterator implementation 2020-05-25 18:54:41 +03:00
iterator.h iterator: add a generic GPtrArray iterator implementation 2020-05-25 18:54:41 +03:00
link.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
link.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
meson.build lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
metadata.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
metadata.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
module.c lib: add a WpPlugin class 2020-05-12 18:18:21 +03:00
module.h lib: add extensive API documentation 2020-02-19 10:43:07 +02:00
node.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
node.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
object-interest.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
object-interest.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
object-manager.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
object-manager.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
object.c lib: add new WpObject base class 2020-11-13 19:54:48 +02:00
object.h lib: add new WpObject base class 2020-11-13 19:54:48 +02:00
plugin.c plugin: add name property 2020-10-22 08:40:27 -04:00
plugin.h plugin: add name property 2020-10-22 08:40:27 -04:00
port.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
port.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
private.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
properties.c properties: all properties from other must be included in self for the match to be valid 2020-06-16 12:56:04 +03:00
properties.h properties: add wp_properties_unref_and_take_pw_properties() 2020-06-15 17:22:47 +03:00
props.c props: refactor WpSpaProps into WpProps 2020-05-29 18:47:16 +03:00
props.h props: refactor WpSpaProps into WpProps 2020-05-29 18:47:16 +03:00
proxy-interfaces.c lib: add new proxy-interfaces: interfaces for the refactored WpProxy class 2020-11-13 19:54:48 +02:00
proxy-interfaces.h lib: add new proxy-interfaces: interfaces for the refactored WpProxy class 2020-11-13 19:54:48 +02:00
proxy.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
proxy.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
session-bin.c session-bin: call parent's reset() in reset() 2020-06-18 19:28:03 +03:00
session-bin.h session-bin: add _get_n_children() method 2020-05-04 14:13:32 +03:00
session-item.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
session-item.h session-item: add _get_parent API 2020-05-03 19:54:31 +03:00
session.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
session.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
si-factory.c modules: fix small issues in the session items 2020-04-23 15:22:32 +03:00
si-factory.h lib: implement WpSiFactory, a factory for session items 2020-03-29 15:02:59 +03:00
si-interfaces.c si-interfaces: drop the multi-endpoint interface 2020-05-04 09:35:22 +03:00
si-interfaces.h si-interfaces: drop the multi-endpoint interface 2020-05-04 09:35:22 +03:00
spa-pod.c spa-pod: keep a reference of the pod in the ierator 2020-06-04 09:48:43 -04:00
spa-pod.h spa-pod: remove const-ness from API 2020-06-04 09:48:43 -04:00
spa-type.c spa-type: add the AUDIO_CHANNEL table 2020-04-22 13:44:40 +03:00
spa-type.h spa-type: add the AUDIO_CHANNEL table 2020-04-22 13:44:40 +03:00
transition.c lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
transition.h transition: add the ability to use a GClosure instead of a GAsyncReadyCallback 2020-05-08 19:23:23 +03:00
wp.c Implement PW_TYPE_INTERFACE_Metadata 2020-07-30 21:30:14 +05:30
wp.h lib: refactor WpProxy 2020-11-13 19:54:48 +02:00
wpversion.h.in lib: add a version header 2020-06-02 18:26:40 +03:00