Skip to content
Snippets Groups Projects
  1. Jan 21, 2021
  2. 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
  3. Jun 10, 2020
    • 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
  4. May 26, 2020
  5. May 12, 2020
    • George Kiagiadakis's avatar
      lib: use WP_PROXY_FEATURE_LAST with a shift when declaring additional features · d13e411d
      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.
      d13e411d
  6. May 05, 2020
  7. Apr 22, 2020
  8. Feb 19, 2020
  9. Feb 11, 2020
    • George Kiagiadakis's avatar
      proxy/core: refactor object creation · 9330208a
      George Kiagiadakis authored
      * 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
      9330208a
  10. Jan 22, 2020
  11. Jan 16, 2020
  12. Aug 27, 2019
  13. Aug 26, 2019
  14. Aug 25, 2019
  15. Jun 19, 2019
  16. Jun 18, 2019
  17. Jun 17, 2019
Loading