Add MIDI controller device index to InputEventMIDI.device property.
It is possible to query the OS for the connected MIDI controllers, but the event messages' device field was not being used. This implements controller index being sent in InputEventMIDI messages in the device property, matching the index from OS.get_connected_midi_inputs(). Based on the work done by @ramdor. Closes godotengine/godot-proposals#7733 Co-authored-by: Richie <richie_github@grange-lane.co.uk>
This commit is contained in:
@ -36,7 +36,7 @@
|
||||
|
||||
void MIDIDriverWinMidi::read(HMIDIIN hMidiIn, UINT wMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2) {
|
||||
if (wMsg == MIM_DATA) {
|
||||
receive_input_packet((uint64_t)dwParam2, (uint8_t *)&dwParam1, 3);
|
||||
receive_input_packet((int)dwInstance, (uint64_t)dwParam2, (uint8_t *)&dwParam1, 3);
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ Error MIDIDriverWinMidi::open() {
|
||||
for (UINT i = 0; i < midiInGetNumDevs(); i++) {
|
||||
HMIDIIN midi_in;
|
||||
|
||||
MMRESULT res = midiInOpen(&midi_in, i, (DWORD_PTR)read, (DWORD_PTR)this, CALLBACK_FUNCTION);
|
||||
MMRESULT res = midiInOpen(&midi_in, i, (DWORD_PTR)read, (DWORD_PTR)i, CALLBACK_FUNCTION);
|
||||
if (res == MMSYSERR_NOERROR) {
|
||||
midiInStart(midi_in);
|
||||
connected_sources.insert(i, midi_in);
|
||||
|
||||
Reference in New Issue
Block a user