aboutsummaryrefslogtreecommitdiffstats
path: root/src/backend.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2024-11-22 19:12:59 -0500
committerDavid Robillard <d@drobilla.net>2024-11-24 19:12:22 -0500
commit10f1ed7218d4480cd9b1e43e0eb1af4541dab59f (patch)
tree7ce9b72aac4b25253e0bfc60678d62f14f983ac4 /src/backend.h
parent57006d3bf443f2ade18abe7021f8aa8a11b08bcb (diff)
downloadjalv-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.h26
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