SceneSwitcher/plugins/midi/remove-bit-cast-for-macos-build.patch
2024-02-24 16:48:52 +01:00

43 lines
2.1 KiB
Diff

diff --git a/include/libremidi/backends/coremidi/helpers.hpp b/include/libremidi/backends/coremidi/helpers.hpp
index 08e62ff..ba35ec7 100644
--- a/include/libremidi/backends/coremidi/helpers.hpp
+++ b/include/libremidi/backends/coremidi/helpers.hpp
@@ -207,7 +207,8 @@ inline CFStringRef ConnectedEndpointName(MIDIEndpointRef endpoint)
inline MIDIObjectRef
locate_object(auto& self, const port_information& info, MIDIObjectType requested_type)
{
- auto uid = std::bit_cast<std::int32_t>((uint32_t)info.port);
+ std::int32_t uid;
+ std::memcpy(&uid, &(info.port), sizeof(uint32_t));
MIDIObjectRef object{};
MIDIObjectType type{};
auto ret = MIDIObjectFindByUniqueID(uid, &object, &type);
diff --git a/include/libremidi/backends/coremidi/observer.hpp b/include/libremidi/backends/coremidi/observer.hpp
index defe623..12a936a 100644
--- a/include/libremidi/backends/coremidi/observer.hpp
+++ b/include/libremidi/backends/coremidi/observer.hpp
@@ -78,13 +78,16 @@ public:
if (!ok)
return {};
- return std::conditional_t<Input, input_port, output_port>{
- {.client = (std::uintptr_t)this->client,
- .port = std::bit_cast<uint32_t>(get_int_property(obj, kMIDIPropertyUniqueID)),
- .manufacturer = get_string_property(obj, kMIDIPropertyManufacturer),
- .device_name = get_string_property(obj, kMIDIPropertyModel),
- .port_name = get_string_property(obj, kMIDIPropertyName),
- .display_name = get_string_property(obj, kMIDIPropertyDisplayName)}};
+ std::conditional_t<Input, input_port, output_port> ret{
+ {.client = (std::uintptr_t)this->client,
+ .port = 0,
+ .manufacturer = get_string_property(obj, kMIDIPropertyManufacturer),
+ .device_name = get_string_property(obj, kMIDIPropertyModel),
+ .port_name = get_string_property(obj, kMIDIPropertyName),
+ .display_name = get_string_property(obj, kMIDIPropertyDisplayName)}};
+ auto prop = get_int_property(obj, kMIDIPropertyUniqueID);
+ std::memcpy(&ret.port, &(prop), sizeof(prop));
+ return ret;
}
std::vector<libremidi::input_port> get_input_ports() const noexcept override