Skip to content
Snippets Groups Projects
  1. Nov 16, 2020
  2. Nov 15, 2020
  3. Nov 14, 2020
  4. Nov 13, 2020
    • George Kiagiadakis's avatar
      lib: refactor WpProxy · 2f3f5f8e
      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.
      2f3f5f8e
    • George Kiagiadakis's avatar
    • George Kiagiadakis's avatar
    • George Kiagiadakis's avatar
      lib: add new WpObject base class · 36538a54
      George Kiagiadakis authored
      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.
      36538a54
  5. Oct 22, 2020
  6. Oct 15, 2020
  7. Aug 31, 2020
  8. Jul 31, 2020
  9. Jul 30, 2020
  10. Jun 29, 2020
    • George Kiagiadakis's avatar
      spa-device / m-monitor: fix pw_proxy leaks reported by pw_core · a3870581
      George Kiagiadakis authored
      1. device export proxies must be destroyed manually since they are
         not associated with the WpRegistry
      2. the monitors should not disconnect before all WpSpaDevice objects
         are destroyed; remove the manual disconnect call and let GObject
         ref counting do its job (the core will disconnect when its last ref
         count is dropped after the last monitor plugin is destroyed)
      a3870581
  11. Jun 18, 2020
  12. Jun 16, 2020
  13. Jun 15, 2020
  14. Jun 12, 2020
  15. Jun 11, 2020
  16. Jun 10, 2020
    • Julian Bouzas's avatar
      c7982a83
    • Julian Bouzas's avatar
      core: add wp_core_clone API · eb39dec6
      Julian Bouzas authored
      eb39dec6
    • George Kiagiadakis's avatar
      improve some debug logs · 8d77793a
      George Kiagiadakis authored
      8d77793a
    • George Kiagiadakis's avatar
      impl-node: subclass from GObject · 7a486f1f
      George Kiagiadakis authored
      By mistake, WpImplNode was developed by keeping in mind that the proxy
      returned by pw_core_export() is a PW_TYPE_INTERFACE_Node, but this
      is not true. It's actually a ClientNode...
      
      Unfortunately, making WpImplNode work as if it was a WpNode is
      not so easy, especially when it comes to handling params, which
      need to be queried syncrhonously on the underlying spa_node.
      
      So, instead of fixing WpImplNode to work as a WpNode, we choose to
      disconnect them. This way, WpImplNode will not be used as a proxy
      in the registry and the registry will normally create WpNode proxies
      instead, making round-trips through the server to change node params.
      7a486f1f
  17. Jun 04, 2020
Loading