Commit graph

1724 commits

Author SHA1 Message Date
Wim Taymans
93e8074b2c alloc: improve alignment in alloactor
link: use buffer allocator
Add more tests
2019-01-25 13:32:35 +01:00
Wim Taymans
13bf70a8dd mem: align memory to requested alignment
Improve the allocators to always align the buffer memory to the
requested alignment
Use aligned read and writes for sse functions and check alignment,
optionally falling back to unaligned path.
Add more tests and benchmark cases
Check and warn for misaligned memory in plugins.
2019-01-24 18:28:52 +01:00
Wim Taymans
351fb9ce29 pod: improve parser and builder
Remove the spa_pod_iter helpers
Remove builder/parser vararg recurse option, you have to
manually recurse into structures when needed. This simplifies
things a lot.
Pass spa_pod_frames to builder and parser explicitly, we don't
have to keep an internal stack anymore.
The parser is now almost a mirror image of the builder.
Make the parser safer when iterating over objects, add functions
to check and get pod contents in a safe way.
Make the builder return errno style results on errors
Improve performance of object properties when they are stored and
retrieved in the same order.
Add many more tests for the builder and parser
Add some benchmarks
2019-01-22 17:38:23 +01:00
Wim Taymans
2622e085a9 pod: add more helpers
Implement more unit-tests
2019-01-17 17:23:47 +01:00
Wim Taymans
92e9d99d0a add some padding and fix types 2019-01-16 17:37:58 +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
3dc6820e9e Don't use __ in defines or declarations, it's reserved
SPA_TYPE -> SPA_TYPE_INFO for type info strings
improve includes

Fixes #115
2019-01-14 13:00:00 +01:00
Wim Taymans
2ab96db5b5 protocol: fix permission marshal, skip default permissions 2019-01-10 16:35:25 +01:00
Wim Taymans
1cb8a61b71 interfaces: make permissions const 2019-01-10 12:29:21 +01:00
Wim Taymans
103249ae76 interfaces: remove core properties update
Use the update_properties method on the client
2019-01-10 12:17:58 +01:00
Wim Taymans
0072f9cf2b interfaces: add method to update properties 2019-01-10 11:55:04 +01:00
Wim Taymans
1a27d7da1d interfaces: remove core permissions
Use the client update_permissions call instead
2019-01-10 11:09:05 +01:00
Wim Taymans
505eb7a423 protocol: automatically bind to the client as well
Bind to the client as well as the remote core. This way we will be
able to update our properties and permissions directly on the client.
2019-01-10 11:01:30 +01:00
Wim Taymans
349a11cde5 add const to info 2019-01-09 17:49:45 +01:00
Wim Taymans
8fa6126599 rtkit: improve DISABLE_RTKIT
DISABLE_RTKIT should not even try to get the dbus connection or
anything.
2019-01-09 11:24:48 +01:00
Wim Taymans
1ed27a8f2b add _GNU_SOURCE as compiler flag 2019-01-08 17:36:58 +01:00
Wim Taymans
57e0a94163 add const to info changes 2019-01-08 17:34:32 +01:00
Wim Taymans
b0f4be5fbc fix more compile errors
Avoid void * arithmetic
Do explicit casts to target type to make c++ happy
2019-01-08 11:53:36 +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
098b80aa0c protocol: pass state as id 2019-01-07 15:39:59 +01:00
Wim Taymans
de796d34ad pod: handle pod copy failure
Don't check NULL in pw_spa_pod_copy so that we can check for allocation
failures when the functions returns NULL.
2019-01-07 15:36:19 +01:00
Wim Taymans
0984096089 free() can handle NULL just fine so skip the check
Fixes #117
2018-12-19 17:47:25 +01:00
Wim Taymans
02585c6ca9 merger: add monitor ports
Add an option to enable monitor ports. Use this in the audio dsp
to expose monitor ports on the audio dsp nodes.
2018-12-11 16:35:40 +01:00
Wim Taymans
4d780e87aa client-stream: activate peaks resampler when monitoring 2018-12-05 16:00:52 +01:00
Wim Taymans
bdc97ae140 client-stream: fix cleanup
first let the client-stream node cleanup and then destroy our
client-node.
2018-12-04 16:20:57 +01:00
Wim Taymans
7c54b4b89c audio-dsp: improve properties 2018-11-28 13:24:33 +01:00
Wim Taymans
417c1cd756 device: add media.class to global properties 2018-11-28 11:12:36 +01:00
maxice8
3b117d9ecf module-rtkit: define RLIMIT_RTTIME in case it isn't defined.
musl libc doesn't define RLIMIT_RTTIME
2018-11-26 13:24:27 +01:00
maxice8
b911c36793 meson: don't add systemd_dep to dependencies if systemd option is false. 2018-11-26 13:24:23 +01:00
Wim Taymans
7bc9c1ebfe node: remove info from node interface
Replace with info event emited when callbacks are set. This makes it
easier to implement dynamic changes.
2018-11-26 12:41:40 +01:00
Wim Taymans
57e94f7bc4 monitor: remove enum_items
Make the monitor and device emit the info and items when the callbacks
are set. This makes it easier to implement the monitor because there
is much less state to keep around and invalidate etc.
Rework the monitors
Add bluez5 device
2018-11-26 12:18:53 +01:00
Wim Taymans
5b303b5883 protocol: add name to device 2018-11-23 19:29:04 +01:00
Wim Taymans
3ae39180ca improve monitors 2018-11-23 19:14:47 +01:00
Wim Taymans
e23c209a5f alsa: implement monitor and device 2018-11-23 17:41:39 +01:00
Wim Taymans
e1bd12e599 device: add device object
Make a device object, let the v4l2 monitor create device objects
The device object is responsible for dynamically creating nodes.
2018-11-23 12:43:47 +01:00
Wim Taymans
85f2e93c54 Relicense as MIT/X11
Remove some obsolete files
2018-11-05 17:48:52 +01:00
Wim Taymans
e107d75248 protocol-native: improve permission checks 2018-11-05 15:27:13 +01:00
Wim Taymans
eb0a561f8c permissions: pass pw_permission struct around
Use a pw_permission struct to express permissions of object.
Improve client permissions, add/remove globals when permissions
are changed.
2018-11-05 15:02:08 +01:00
Wim Taymans
f994b7eb70 protocol-native: only add fd if client active 2018-11-05 14:58:13 +01:00
Wim Taymans
8089d856c8 protocol: add more debug and check right permissions 2018-10-31 16:31:15 +00:00
Wim Taymans
0bc6ba8559 node: allow for setting driver root
The driver root is the graph that should be run when a remote driver
starts the graph and can be different from the node itself when it's
part of a subgraph like in client-stream.
2018-10-31 10:57:26 +00:00
Nicolas Dufresne
02e3713cf1 rtkit: Allow disabling with DISABLE_RTKIT
Allow disabling real time thread, this is useful to run inside
valgrind without being killed.

Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
2018-10-31 07:49:35 +00:00
Wim Taymans
df4a5efb89 client-node: don't try to modify the clock
The clock position should match the buffer timestamps and we should
not try to change it. If a client wants to align stream it will
have to do this itself.
2018-10-30 16:32:25 +00:00
Wim Taymans
9364253886 module-access: use check_access signal
Add restricted, blacklisted and flatpak access types.
2018-10-29 08:46:09 +00:00
Wim Taymans
dfde479b20 protocol-native: put client properties in global 2018-10-29 08:43:53 +00:00
Wim Taymans
5088bcce60 module-access: make new access module
Rename the flatpak module to access module. The access module should
either let the client connect or mask the client busy while the
permissions are being configured. It is then up to the session manager
to collect the right permissions of the objects and configure those
in the client.

Let the media session monitor the clients and configure the permissions.
2018-10-27 17:33:21 +01:00
Wim Taymans
e026f55c97 protocol: add more methods on client
Add method to get and set permissions on a client
Add method to send error to client.
2018-10-27 17:31:03 +01:00
Wim Taymans
2accfc84d7 Add version to hello 2018-10-27 17:19:50 +01:00
Wim Taymans
537598726b protocol-native: first bind, then register
First let the client bind to the core, then register the client.
This way, the client is ready to receive methods on the core.
2018-10-27 17:10:01 +01:00