1. 18 Nov, 2021 1 commit
  2. 28 Sep, 2021 1 commit
  3. 25 Jun, 2021 1 commit
  4. 30 Jul, 2020 1 commit
    • Wim Taymans's avatar
      permission: add some helpers · 91d48066
      Wim Taymans authored
      Add PW_PERM_ALL as a shortcut for all permissions
      Add PW_PERMISSION_FORMAT and PW_PERMISSION_ARGS to nicely format
      permissions.
      91d48066
  5. 20 May, 2020 1 commit
    • Wim Taymans's avatar
      client-node: don't ref destroyed resource · 6a689b3c
      Wim Taymans authored
      Ownership of the node_resource is taken by _new() and freed.
      Don't try to use it afterwards to send an error when something
      goes wrong but use the original resource.
      6a689b3c
  6. 25 Feb, 2020 1 commit
    • Wim Taymans's avatar
      improve error messages · 65d72bb8
      Wim Taymans authored
      Send create_object error messages to the new resource id so that
      the client can better know what proxy is failing.
      Use resource_remove when create_object fails because the core will
      already send a remove_id on failure.
      Try to send other errors to the proxy that made the request if
      possible.
      65d72bb8
  7. 19 Dec, 2019 1 commit
    • Wim Taymans's avatar
      Make interface types a string · f391353c
      Wim Taymans authored
      This is more in line with wayland and it allows us to create new
      interfaces in modules without having to add anything to the type
      enum. It also removes some lookups to map type_id to readable
      name in debug.
      f391353c
  8. 13 Dec, 2019 1 commit
    • Wim Taymans's avatar
      pass spa_dict around as config · 1317ca14
      Wim Taymans authored
      Don't pass pw_properties around when we simply need to pass around
      config info, only use pw_properties when used to construct an object
      that keeps the properties.
      1317ca14
  9. 11 Dec, 2019 7 commits
  10. 10 Dec, 2019 1 commit
    • Wim Taymans's avatar
      pw_core -> pw_context · 8ea78c2e
      Wim Taymans authored
      The proxy API is the one that we would like to expose for applications
      and the other API is used internally when implementing modules or
      factories.
      
      The current pw_core object is really a context for all objects so
      name it that way. It also makes it possible to rename pw_core_proxy
      to pw_proxy later.
      8ea78c2e
  11. 05 Dec, 2019 1 commit
  12. 21 Nov, 2019 1 commit
  13. 25 Oct, 2019 1 commit
  14. 08 Oct, 2019 1 commit
    • Wim Taymans's avatar
      protocol: add v0 compatibility · 082463ef
      Wim Taymans authored
      For flatpaks we need to be able to support older v0 protocol clients.
      To handle this we have:
      
      - the connection detects an old client when it receives the first
        message. It can do this by checking the sequence number, on old
        versions it contains the message size and is never 0, on new
        clients the sequence number is 0.
      
      - We add a new signal at the start of the connection with the detected
        version number. This installs the right version of the core proxy.
        We also move the binding of the client until the hello message is
        received. This way we can have a new client connect (portal),
        hand over the connection to an old client, which then removes the
        client binding again in the hello request with a v0 version.
        There are some changes to the passing of fds in v0 vs v3 which need
        to investigated some more.
      
      - bump version of our interfaces to 3. This makes it possible to
        have v0 and v3 protocol marshal functions.
      
      - Add version number in the proxy. This is mostly automatically done
        internally based on the version numbers the library is compiled
        with. Where the version number was in the API before, it is now
        actually used to look up the right protocol marshal functions. For
        Proxies there is usually just 1 version, the current one. It is the
        server that will support different versions.
      
      - Add v0 compat marshal functions to convert from and to v0 format.
        This has some complications. v0 has a type map it keeps in sync
        with the server. For this we have a static type map with mappings
        to our own v3 types. Pods are mostly the same except for objects
        that used to have arbitrary pods in v0 vs spa_pod_prop in v3. Also
        convert between v0 spa_pod_prop and v3 spa_pod_choice.
        Formats and commands are also slightly different so handle those
        mappings as well.
        We only have marshal functions for the server side (resource)
        v0 functions.
      
      - Add v0 compatible client-node again. It's a bit tricky to map, v0
        client-node basically lets the server to the mixing and teeing
        and just does the processing of the internal node.
      082463ef
  15. 16 Aug, 2019 1 commit
    • Wim Taymans's avatar
      core: remove parent_id from the global event · 8db4a797
      Wim Taymans authored
      Remove the parent_id from the global event. Remove the parent
      and owner from the global object.
      
      Use properties instead to mark parents and owners of objects.
      
      Properties are easier to control for client exported objects and
      usually a simple parent/child is not enough. For example, a client
      exported node has the client as a parent but also the factory that
      created the node.
      8db4a797
  16. 15 Jul, 2019 1 commit
    • Wim Taymans's avatar
      stream: remove client-stream · 0cdc3dce
      Wim Taymans authored
      Use an adapter instead of the client-stream. This means we run
      the audioconverters and resamplers in the client instead of the
      pipewire daemon. It also allows us to implement the audio mixing
      correctly in the capture client.
      
      The only pending piece is that we now wake up the client with the
      period of the server. Maybe we can later optimize that and
      accumulate/split buffers before waking the client.
      
      This probably needs fixing with video..
      0cdc3dce
  17. 20 Jun, 2019 1 commit
  18. 19 Jun, 2019 1 commit
  19. 30 May, 2019 1 commit
  20. 24 May, 2019 1 commit
  21. 25 Feb, 2019 1 commit
    • Wim Taymans's avatar
      more async improvements · f2ff6f39
      Wim Taymans authored
      Make the sequence number an int.
      
      Keep track of the last received seq number and pass it in error
      replies.
      
      Pass seq in for_each methods.
      f2ff6f39
  22. 14 Feb, 2019 1 commit
    • Wim Taymans's avatar
      resource: improve error handling · 8ae54243
      Wim Taymans authored
      Make some more varargs error functions
      Make pw_resource_error always just send the error to the resource id.
      Make sure we send errors to the right destination.
      Add proxy error event and emit it when the core finds an error for
      the given proxy id.
      The client error is supposed to be sent to all resources of a client
      for the given global.
      8ae54243
  23. 06 Feb, 2019 2 commits
  24. 31 Jan, 2019 1 commit
    • Wim Taymans's avatar
      remote: move node export code to client-node module · 31dacd9d
      Wim Taymans authored
      Make the code to export objects more generic. Make it possible for
      modules to register a type to export.
      Make the client-node also able to export plain spa_nodes.
      Let the remote signal the global of the exported object if any. We can
      then remote the (unused) remote_id from the proxy.
      31dacd9d
  25. 14 Jan, 2019 1 commit
  26. 05 Nov, 2018 1 commit
  27. 03 Oct, 2018 2 commits
  28. 27 Aug, 2018 1 commit
    • Wim Taymans's avatar
      More type cleanups · 90c1a95e
      Wim Taymans authored
      SPA_ID_* -> SPA_TYPE_*. We use 'type' for all registered types.
      ID refers to either a registered type or an enum.
      Improve introspection of object ids. Make 0 an invalid enum and
      use it to look up the object id type.
      Move some type-info files together.
      Swap type and id of the object, we first specify the type and then
      the id because the meaning of the id depends on the object type.
      90c1a95e
  29. 23 Aug, 2018 1 commit
    • Wim Taymans's avatar
      Remove dynamic types · fca3e1d8
      Wim Taymans authored
      Do not use dynamic types anymore. The reason is that it's difficult:
      
      - to maintain a shared type database over a network.
      - the extra overhead when translating between processes and for
        maintaining the translation tables.
      - race conditions in translating in RT-threads, this is a problem
        because we want to make event streams.
      
      We now have simple enums with types and extension points for all
      types. This is also nicer to use in general.
      We don't need the mapper anymore or pass strings around as types.
      There is a parallel type info system to get more info about ids and
      enums and their hierarchy. It can also be used for debugging.
      fca3e1d8
  30. 03 Jul, 2018 1 commit
    • Wim Taymans's avatar
      client-node: set parent id and owner · 79a3b594
      Wim Taymans authored
      Make sure we set the right parent id and owner for the client node
      and client-stream
      Move the remote id in the proxy object and use it in the stream to
      get the node id.
      79a3b594
  31. 01 Jun, 2018 1 commit
  32. 13 Apr, 2018 1 commit
    • Wim Taymans's avatar
      add client-stream · 63ce244c
      Wim Taymans authored
      A client stream is a more specialized way to send 1 stream to pipewire.
      On the client side and receiver side it can do conversion and the
      buffer size of the client can be choosen arbitrarily.
      63ce244c