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
A base class for objects that can have optional
features enabled and disabled. The intention is to make
this the superclass of WpProxy.
Instead of following the augment() pattern of WpProxy,
this one follows the more advanced transition pattern
that has been previously implemented in WpSessionItem.
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.
Exposing a spa_dict is necessary to allow using native pipewire API
that deals with these properties.
The internal structure change avoids mem copies when we need to
return a spa_dict.
This commits also removes exposing internal info structures via the
properties mechanism. This needs more thinking...