diff options
author | David Robillard <d@drobilla.net> | 2024-11-22 19:12:59 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2024-11-24 19:12:22 -0500 |
commit | 10f1ed7218d4480cd9b1e43e0eb1af4541dab59f (patch) | |
tree | 7ce9b72aac4b25253e0bfc60678d62f14f983ac4 /src/backend.h | |
parent | 57006d3bf443f2ade18abe7021f8aa8a11b08bcb (diff) | |
download | jalv-10f1ed7218d4480cd9b1e43e0eb1af4541dab59f.tar.gz jalv-10f1ed7218d4480cd9b1e43e0eb1af4541dab59f.tar.bz2 jalv-10f1ed7218d4480cd9b1e43e0eb1af4541dab59f.zip |
Cleanly separate backends from the rest of the application
Finally hitting some concrete refactoring paydirt, with this, backend code
doesn't have access to the application as a whole whatsoever.
If some day the backends become loadable modules that need a more stable API,
something will need to be done about jalv_backend_open(), probably move the
parameters into some struct to make the interface extensible. For now though,
being explicit and fine-grained is fine (good, even), if a bit verbose.
Diffstat (limited to 'src/backend.h')
-rw-r--r-- | src/backend.h | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/backend.h b/src/backend.h index 9cb6508..1794455 100644 --- a/src/backend.h +++ b/src/backend.h @@ -1,12 +1,16 @@ -// Copyright 2007-2022 David Robillard <d@drobilla.net> +// Copyright 2007-2024 David Robillard <d@drobilla.net> // SPDX-License-Identifier: ISC #ifndef JALV_BACKEND_H #define JALV_BACKEND_H #include "attributes.h" +#include "process.h" +#include "settings.h" #include "types.h" +#include "urids.h" +#include <stdbool.h> #include <stdint.h> // Interface that must be implemented by audio/MIDI backends @@ -22,27 +26,35 @@ jalv_backend_free(JalvBackend* backend); /// Open the audio/MIDI system int -jalv_backend_open(Jalv* jalv); +jalv_backend_open(JalvBackend* backend, + const JalvURIDs* urids, + JalvSettings* settings, + JalvProcess* process, + ZixSem* done, + const char* name, + bool exact_name); /// Close the audio/MIDI system void -jalv_backend_close(Jalv* jalv); +jalv_backend_close(JalvBackend* backend); /// Activate the backend and start processing audio void -jalv_backend_activate(Jalv* jalv); +jalv_backend_activate(JalvBackend* backend); /// Deactivate the backend and stop processing audio void -jalv_backend_deactivate(Jalv* jalv); +jalv_backend_deactivate(JalvBackend* backend); /// Expose a port to the system (if applicable) and connect it to its buffer void -jalv_backend_activate_port(Jalv* jalv, uint32_t port_index); +jalv_backend_activate_port(JalvBackend* backend, + JalvProcess* process, + uint32_t port_index); /// Recompute latencies based on plugin port latencies if necessary void -jalv_backend_recompute_latencies(Jalv* jalv); +jalv_backend_recompute_latencies(JalvBackend* backend); JALV_END_DECLS |