Skip to content

Commit a1981b2

Browse files
committed
winmidi: make com extensions work in header-only mode
1 parent 927fddb commit a1981b2

6 files changed

Lines changed: 17 additions & 7 deletions

File tree

cmake/libremidi.winmidi.cmake

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,3 @@ target_include_directories(libremidi SYSTEM ${_public}
7878
)
7979
target_compile_definitions(libremidi ${_public} LIBREMIDI_WINMIDI)
8080
target_link_libraries(libremidi ${_public} RuntimeObject windowsapp)
81-
target_sources(libremidi PRIVATE
82-
"${CMAKE_BINARY_DIR}/cppwinrt-winmidi/WindowsMidiServicesAppSdkComExtensions_i.c"
83-
"${CMAKE_BINARY_DIR}/cppwinrt-winmidi/WindowsMidiServicesAppSdkComExtensions_p.c"
84-
)

include/libremidi/backends/winmidi/helpers.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@
1919
#if __has_include(<WindowsMidiServicesAppSdkComExtensions.h>)
2020
#include <WindowsMidiServicesAppSdkComExtensions.h>
2121
#define LIBREMIDI_WINMIDI_HAS_COM_EXTENSIONS 1
22+
23+
#define LIBREMIDI_DEFINE_GUID_CONSTEXPR(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
24+
static constexpr const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
25+
26+
namespace libremidi {
27+
LIBREMIDI_DEFINE_GUID_CONSTEXPR(IID, IID_IMidiEndpointConnectionMessagesReceivedCallback,0x8087b303,0x0519,0x31d1,0x31,0xd1,0x00,0x00,0x00,0x00,0x00,0x10);
28+
LIBREMIDI_DEFINE_GUID_CONSTEXPR(IID, IID_IMidiEndpointConnectionRaw,0x8087b303,0x0519,0x31d1,0x31,0xd1,0x00,0x00,0x00,0x00,0x00,0x20);
29+
}
2230
#endif
2331

2432
// MinGW support

include/libremidi/backends/winmidi/midi_in.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class midi_in_impl final
3535
return E_POINTER;
3636

3737
if (riid == __uuidof(IUnknown) ||
38-
riid == IID_IMidiEndpointConnectionMessagesReceivedCallback)
38+
riid == libremidi::IID_IMidiEndpointConnectionMessagesReceivedCallback)
3939
{
4040
*ppvObject = static_cast<IMidiEndpointConnectionMessagesReceivedCallback*>(this);
4141
AddRef();
@@ -113,7 +113,7 @@ class midi_in_impl final
113113
process_message(args);
114114
});
115115
#else
116-
m_endpoint.as(IID_IMidiEndpointConnectionRaw, m_raw_endpoint.put_void());
116+
m_endpoint.as(libremidi::IID_IMidiEndpointConnectionRaw, m_raw_endpoint.put_void());
117117

118118
m_raw_endpoint->SetMessagesReceivedCallback(
119119
&raw_callback

include/libremidi/backends/winmidi/midi_out.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class midi_out_impl final
4848

4949
m_endpoint = m_session.CreateEndpointConnection(ep.EndpointDeviceId());
5050
#if LIBREMIDI_WINMIDI_HAS_COM_EXTENSIONS
51-
m_endpoint.as(IID_IMidiEndpointConnectionRaw, m_raw_endpoint.put_void());
51+
m_endpoint.as(libremidi::IID_IMidiEndpointConnectionRaw, m_raw_endpoint.put_void());
5252
#endif
5353
m_endpoint.Open();
5454

include/libremidi/cmidi2.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
#include <stdbool.h>
77
#include <stdint.h>
88

9+
#if !defined(_MSC_VER)
910
#pragma GCC system_header
1011
#pragma clang system_header
12+
#endif
1113

1214
#define CMIDI2_MIDI_2_0_RESERVED 0
1315
#define CMIDI2_JR_TIMESTAMP_TICKS_PER_SECOND 31250

include/libremidi/error.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
#pragma once
22
#include <libremidi/config.hpp>
33

4+
#if !defined(_MSC_VER)
45
#pragma GCC diagnostic push
56
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
67
#pragma GCC diagnostic ignored "-Wunused-parameter"
8+
#endif
79
#include <libremidi/system_error2.hpp>
10+
#if !defined(_MSC_VER)
811
#pragma GCC diagnostic pop
12+
#endif
913

1014
#include <functional>
1115
#include <string_view>

0 commit comments

Comments
 (0)