upgrade to libremidi 5.1, raylib and raygui latest

This commit is contained in:
Sebastian @ HfG
2025-06-13 19:16:35 +02:00
parent 62454960d1
commit 2cc6839009
112 changed files with 6484 additions and 1946 deletions
+19 -8
View File
@@ -1,7 +1,6 @@
#pragma once
#include <libremidi/config.hpp>
#include <any>
#include <tuple>
#if !__has_include(<weak_libjack.h>) && !__has_include(<jack/jack.h>)
@@ -30,10 +29,14 @@
#if defined(LIBREMIDI_JACK)
#include <libremidi/backends/jack.hpp>
#include <libremidi/backends/jack_ump.hpp>
#endif
#if defined(LIBREMIDI_PIPEWIRE)
#include <libremidi/backends/pipewire.hpp>
#if defined(LIBREMIDI_PIPEWIRE_UMP)
#include <libremidi/backends/pipewire_ump.hpp>
#endif
#endif
#if defined(LIBREMIDI_COREMIDI)
@@ -163,6 +166,14 @@ static constexpr auto available_backends = make_tl(
#if defined(LIBREMIDI_NETWORK)
,
net_ump::backend{}
#endif
#if defined(LIBREMIDI_JACK)
,
jack_ump::backend{}
#endif
#if defined(LIBREMIDI_PIPEWIRE_UMP)
,
pipewire_ump::backend{}
#endif
,
dummy_backend{});
@@ -173,7 +184,7 @@ static_assert(std::tuple_size_v<decltype(available_backends)> >= 1);
template <typename F>
auto for_all_backends(F&& f)
{
std::apply([&](auto&&... x) { (f(x), ...); }, available_backends);
std::apply([&](auto&&... x) { ((x.available() && (f(x), true)), ...); }, available_backends);
}
template <typename F>
@@ -202,10 +213,10 @@ auto for_backend(libremidi::API api, F&& f)
midi2::for_backend(api, f);
}
void for_input_configuration(auto f, std::any& api_conf)
void for_input_configuration(auto f, libremidi::input_api_configuration& api_conf)
{
auto from_api = [&]<typename T>(T& /*backend*/) mutable {
if (auto conf = std::any_cast<typename T::midi_in_configuration>(&api_conf))
if (auto conf = std::get_if<typename T::midi_in_configuration>(&api_conf))
{
f(*conf);
return true;
@@ -217,10 +228,10 @@ void for_input_configuration(auto f, std::any& api_conf)
std::apply([&](auto&&... b) { return (from_api(b) || ...); }, midi2::available_backends);
}
void for_output_configuration(auto f, std::any& api_conf)
void for_output_configuration(auto f, libremidi::output_api_configuration& api_conf)
{
auto from_api = [&]<typename T>(T& /*backend*/) mutable {
if (auto conf = std::any_cast<typename T::midi_out_configuration>(&api_conf))
if (auto conf = std::get_if<typename T::midi_out_configuration>(&api_conf))
{
f(*conf);
return true;
@@ -232,10 +243,10 @@ void for_output_configuration(auto f, std::any& api_conf)
std::apply([&](auto&&... b) { return (from_api(b) || ...); }, midi2::available_backends);
}
void for_observer_configuration(auto f, std::any& api_conf)
void for_observer_configuration(auto f, libremidi::observer_api_configuration& api_conf)
{
auto from_api = [&]<typename T>(T& /*backend*/) mutable {
if (auto conf = std::any_cast<typename T::midi_observer_configuration>(&api_conf))
if (auto conf = std::get_if<typename T::midi_observer_configuration>(&api_conf))
{
f(*conf);
return true;