Implement yabridge_version for all plugin bridges

The host can use this to query the yabridge version in use.
This commit is contained in:
Robbert van der Helm
2023-12-10 22:30:52 +01:00
parent d39d3a68c1
commit f1a7ad4dcb
6 changed files with 39 additions and 6 deletions
+2 -2
View File
@@ -54,7 +54,7 @@ const void* (*yabridge_module_get_factory)(ClapPluginBridge* instance,
// This bridges the `yabridge_version()` call from the plugin library. This // This bridges the `yabridge_version()` call from the plugin library. This
// function was added later, so through weird version mixing it may be missing // function was added later, so through weird version mixing it may be missing
// on the yabridge library. // on the yabridge library.
char* (*remote_yabridge_version)() = nullptr; const char* (*remote_yabridge_version)() = nullptr;
/** /**
* The bridge instance for this chainloader. This is initialized when * The bridge instance for this chainloader. This is initialized when
@@ -181,7 +181,7 @@ CLAP_EXPORT const clap_plugin_entry_t clap_entry = {
* wouldn't be very useful, and that would also cause the chainloader to be * wouldn't be very useful, and that would also cause the chainloader to be
* rebuilt on every git commit in development. * rebuilt on every git commit in development.
*/ */
extern "C" YABRIDGE_EXPORT char* yabridge_version() { extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
if (!initialize_library() || !remote_yabridge_version) { if (!initialize_library() || !remote_yabridge_version) {
return nullptr; return nullptr;
} }
+2 -2
View File
@@ -52,7 +52,7 @@ AEffect* (*yabridge_plugin_init)(audioMasterCallback host_callback,
// This bridges the `yabridge_version()` call from the plugin library. This // This bridges the `yabridge_version()` call from the plugin library. This
// function was added later, so through weird version mixing it may be missing // function was added later, so through weird version mixing it may be missing
// on the yabridge library. // on the yabridge library.
char* (*remote_yabridge_version)() = nullptr; const char* (*remote_yabridge_version)() = nullptr;
/** /**
* The first time one of the exported functions from this library gets called, * The first time one of the exported functions from this library gets called,
@@ -127,7 +127,7 @@ YABRIDGE_EXPORT AEffect* deprecated_main(audioMasterCallback audioMaster) {
* wouldn't be very useful, and that would also cause the chainloader to be * wouldn't be very useful, and that would also cause the chainloader to be
* rebuilt on every git commit in development. * rebuilt on every git commit in development.
*/ */
extern "C" YABRIDGE_EXPORT char* yabridge_version() { extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
if (!initialize_library() || !remote_yabridge_version) { if (!initialize_library() || !remote_yabridge_version) {
return nullptr; return nullptr;
} }
+2 -2
View File
@@ -54,7 +54,7 @@ PluginFactory* (*yabridge_module_get_plugin_factory)(
// This bridges the `yabridge_version()` call from the plugin library. This // This bridges the `yabridge_version()` call from the plugin library. This
// function was added later, so through weird version mixing it may be missing // function was added later, so through weird version mixing it may be missing
// on the yabridge library. // on the yabridge library.
char* (*remote_yabridge_version)() = nullptr; const char* (*remote_yabridge_version)() = nullptr;
/** /**
* The bridge instance for this chainloader. This is initialized when * The bridge instance for this chainloader. This is initialized when
@@ -164,7 +164,7 @@ extern "C" YABRIDGE_EXPORT PluginFactory* GetPluginFactory() {
* wouldn't be very useful, and that would also cause the chainloader to be * wouldn't be very useful, and that would also cause the chainloader to be
* rebuilt on every git commit in development. * rebuilt on every git commit in development.
*/ */
extern "C" YABRIDGE_EXPORT char* yabridge_version() { extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
if (!initialize_library() || !remote_yabridge_version) { if (!initialize_library() || !remote_yabridge_version) {
return nullptr; return nullptr;
} }
+11
View File
@@ -18,6 +18,9 @@
#include <clap/entry.h> #include <clap/entry.h>
// Generated inside of the build directory
#include <version.h>
#include "bridges/clap.h" #include "bridges/clap.h"
using namespace std::literals::string_literals; using namespace std::literals::string_literals;
@@ -167,3 +170,11 @@ extern "C" YABRIDGE_EXPORT const void* yabridge_module_get_factory(
return instance->get_factory(factory_id); return instance->get_factory(factory_id);
} }
/**
* Returns the yabridge version in use. Can be queried by hosts through the
* chainloader. Both functions have the same name and signature.
*/
extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
return yabridge_git_version;
}
+11
View File
@@ -16,6 +16,9 @@
#include <vestige/aeffectx.h> #include <vestige/aeffectx.h>
// Generated inside of the build directory
#include <version.h>
#include "../common/linking.h" #include "../common/linking.h"
#include "bridges/vst2.h" #include "bridges/vst2.h"
@@ -130,3 +133,11 @@ extern "C" YABRIDGE_EXPORT AEffect* yabridge_plugin_init(
return nullptr; return nullptr;
} }
} }
/**
* Returns the yabridge version in use. Can be queried by hosts through the
* chainloader. Both functions have the same name and signature.
*/
extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
return yabridge_git_version;
}
+11
View File
@@ -14,6 +14,9 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
// Generated inside of the build directory
#include <version.h>
#include "../common/linking.h" #include "../common/linking.h"
#include "bridges/vst3.h" #include "bridges/vst3.h"
@@ -165,3 +168,11 @@ yabridge_module_get_plugin_factory(Vst3PluginBridge* instance) {
return instance->get_plugin_factory(); return instance->get_plugin_factory();
} }
/**
* Returns the yabridge version in use. Can be queried by hosts through the
* chainloader. Both functions have the same name and signature.
*/
extern "C" YABRIDGE_EXPORT const char* yabridge_version() {
return yabridge_git_version;
}