Commit graph

144 commits

Author SHA1 Message Date
Wim Taymans
ae7e60d790 interfaces: add subscribe params method
Add a node subscribe params method that automatically emits the new
params when they change so that we can avoid an enum_params.
Use this in the stream object.

Remove the control messages to update controls in stream, use the
set_param. This is more overhead but allows for notifications to other
clients.

Make it possible to update many controls in one go.
2019-03-18 16:12:27 +01:00
Wim Taymans
2297e99fde submodule 2019-03-15 20:32:46 +01:00
Wim Taymans
efa74adfc3 submodule update 2019-03-14 13:24:51 +01:00
Wim Taymans
c6cb2ea61b port: remove unused code 2019-03-12 12:16:57 +01:00
Wim Taymans
25292e5078 pulse: update submodule 2019-03-11 18:06:24 +01:00
Wim Taymans
fd373ce4d2 submodule update 2019-03-08 17:02:06 +01:00
Wim Taymans
09c4683ef1 interfaces: make events return void
Events are dispatched with hooks and have no return value.

Make it possible to get the last resource and proxy sender value
for where we need it.
2019-03-01 14:04:05 +01:00
Wim Taymans
245a0d5634 global: pass bind function to _new
Make the bind function a callback instead of an event. We can then
get a return value and use that to clean up the pending proxy and
generate an error.
2019-02-25 17:16:40 +01:00
Wim Taymans
d2c18c7b1a Improve async handling
Don't use special callback in node to receive the results. Instead,
use a generic result callback to receive the result. This makes things
a bit more symetric and generic again because then you can choose how
to match the result to the request and you have a generic way to handle
both the sync and async case. We can then also remove the wait method.
This also makes the remote interface and spa interface to objects very
similar.

Make a helper object to receive and dispatch results. Use this in the
helper for enum_params.

Make device use the same result callbacks.
2019-02-25 12:29:57 +01:00
Wim Taymans
7b12212eeb node: improve async handling
Remove the done and error callbacks. The error callback is in an
error message. The done callback is replace with spa_pending.

Make enum_params take a callback and data for the results. This allows
us to push the results one after another to the app and avoids ownership
issues of the passed data. We can then extend this to handle the async
case by doing a _wait call with a spa_pending+callback+data that will
be called when the _enum_params returns and async result.
Add a sync method.

All methods can now return SPA_RESULT_IS_ASYNC return values and you
can use spa_node_wait() to register a callback when they complete
with optional extra parameters. This makes it easier to sync and
handle the reply.

Make helper methods to simulate the sync enum_params behaviour for
sync nodes.

Let the transport generate the sequence number for pw_resource_sync()
and pw_proxy_sync(). That way we don't need to keep track of numbers
ourselves and we can match the reply to the request easily.
2019-02-21 09:40:12 +01:00
Wim Taymans
eea062ee53 interfaces: improve remote API
Add return values to events and method callbacks. This makes it
possible to pass any error or async return value.
Add sync/done/error in both directions so that both proxy and resource
and perform/reply sync and produce errors.
Return a SPA_ASYNC from remote method calls (and events), keep the
sequence number in the connection.
With the core sync/done we can remove the client-node done method and
it's internal sequence number along with the seq number in method calls.
We can also use the method/event async return value to perform a sync
with as the unique sequence number for this method.
Add sync method and done/error event to proxy and resource.
2019-02-18 12:31:36 +01:00
Wim Taymans
569cbb48a9 use SPA_EXPORT to export symbols 2019-02-06 13:24:41 +01:00
Wim Taymans
7ec9de5ac6 video-src: always set chunk info 2019-01-31 10:59:43 +01:00
Wim Taymans
878ae769ef parser: improve parser
Add more unit tests
2019-01-18 13:40:05 +01:00
Wim Taymans
80cfda89c1 pod: improve the vararg pod builder and parser
Automatically parse and build key/value when in objects without having
to prefix the key with ":"
Automatically build control/value when in sequence without the "."
prefix.
Remove the builder with key/pod, taking a reference to the stack built
temporary pods is not allowed in c++. We can use the varargs version
with the same convenient syntax.
Remove the parser "*" option, it is unused.
Improve spa_pod_builder_add_* and spa_pod_parser_get_* and make them
look similar.
2019-01-16 11:05:12 +01:00
Wim Taymans
79d68ace68 update submodule 2019-01-14 13:06:56 +01:00
Wim Taymans
66bab1d9b2 remote: remove some events
Remove some events from the remote that we can find on the core_proxy.
Use the core_proxy to get to the done and info events.
Remove pw_remote_get_core_info(), we don't need this anymore now that
we don't listen for the event and the user can keep track of this
herself.
2019-01-10 10:08:14 +01:00
Wim Taymans
349a11cde5 add const to info 2019-01-09 17:49:45 +01:00
Wim Taymans
1ed27a8f2b add _GNU_SOURCE as compiler flag 2019-01-08 17:36:58 +01:00
Wim Taymans
979d155382 core: add user_data to core 2019-01-08 17:32:37 +01:00
Wim Taymans
d12148cfba graph: remove scheduler2
Move graph code into graph.h
2019-01-08 11:56:44 +01:00
Wim Taymans
5b7ddb0105 buffer: remove buffer id
The buffer id is not needed/used, we use the index of the buffer in the
buffer array when configuring the port.
2019-01-07 17:57:03 +01:00
Wim Taymans
e918f9f77c fix sign confusion 2019-01-07 15:52:42 +01:00
Wim Taymans
5ef6a5cc5a update submodule 2019-01-04 10:01:57 +01:00
Wim Taymans
0e91276a03 fmt-ops: SSE functions were really SSE2
The SSE functions used integer operations and were really SSE2 so
rename.
Optimize some more.
2018-12-20 16:11:25 +01:00
Wim Taymans
ae6d261122 update pulse 2018-12-17 13:29:00 +01:00
Wim Taymans
fb54de0dd0 submodule update 2018-12-14 16:44:12 +01:00
Wim Taymans
97f7ad31a4 submodule update 2018-12-11 16:38:07 +01:00
Wim Taymans
fd82f38ff4 pulse submodule update 2018-12-05 16:02:36 +01:00
Wim Taymans
f0244f659c submodule update 2018-12-04 16:37:24 +01:00
Wim Taymans
4e7af5644b alsa: set period size to something larger
Setting a small period size will also result in a small buffer, on some
cards smaller than what we can deal with right now.
2018-12-03 15:56:53 +01:00
Wim Taymans
67e6a66429 remote: pause with invoke 2018-11-29 17:31:47 +01:00
Wim Taymans
54f527ac02 introspect: remove ENUM_PARAM change
Remove the ENUM_PARAM change bit, we want to do this with a specific
event later that would allow us to specify which params changed etc.
2018-11-28 17:31:00 +01:00
Wim Taymans
72dee1686d alsa: clean up device info 2018-11-28 11:14:28 +01:00
Wim Taymans
e69cf24f24 alsa: add dll to estimate clock drift
Make delay signed in the clock io so that we can simply add it to the
tick to get the hw position.
Add clock drift to clock info
2018-11-09 15:26:08 +01:00
Wim Taymans
8d9aae061b submodules 2018-11-07 09:59:11 +01:00
Wim Taymans
4733bd32c8 update submodules 2018-11-02 12:32:36 +01:00
Wim Taymans
db56f1c9f6 pulse: update submodule 2018-10-31 11:10:27 +00:00
Wim Taymans
0395897856 node: only run the graph when we are the selected driver
Update submodules
2018-10-23 16:52:28 +02:00
Wim Taymans
8b2781b494 submodule update 2018-10-19 17:15:56 +02:00
Wim Taymans
926392a701 update pulseaudio 2018-10-19 17:06:33 +02:00
Wim Taymans
6267e69638 add uninstalled target
Also update submodules
2018-10-16 11:30:38 +02:00
Wim Taymans
456c01afbc meson: enable more options by default
Update submodules to latest version
2018-10-10 17:16:01 +02:00
Tapasweni Pathak
8d71d2dab8 pipewire: add enable/disable to meson for spa plugins 2018-10-10 16:01:28 +02:00