ref: de923fd0d773a575d3bff75600b0b0f0673f8790
parent: 2ffe2f98fc92726badd0de39414cafdf6d3d88d5
author: Jonne Kokkonen <jonne.kokkonen@gmail.com>
date: Tue Apr 8 18:04:51 EDT 2025
various (midi backend) bugfixes - cancel callback when freeing midiports and reset sysex received boolean - destroy queue on device disconnect and reset empty cycles counter - set default empty frames threshold to 256 to timeout faster
--- a/src/backends/m8_rtmidi.c
+++ b/src/backends/m8_rtmidi.c
@@ -126,6 +126,7 @@
void close_and_free_midi_ports(void) {SDL_LogDebug(SDL_LOG_CATEGORY_SYSTEM, "Freeing MIDI ports");
+ rtmidi_in_cancel_callback(midi_in);
rtmidi_close_port(midi_in);
rtmidi_close_port(midi_out);
rtmidi_in_free(midi_in);
@@ -132,6 +133,7 @@
rtmidi_out_free(midi_out);
midi_in = NULL;
midi_out = NULL;
+ midi_sysex_received = false;
}
int initialize_rtmidi() {@@ -301,6 +303,8 @@
if (empty_cycles >= conf->wait_packets) { SDL_Log("No messages received for %d cycles, assuming device disconnected", empty_cycles);close_and_free_midi_ports();
+ destroy_queue(&queue);
+ empty_cycles = 0;
return 0;
}
}
--- a/src/config.c
+++ b/src/config.c
@@ -32,7 +32,7 @@
c.integer_scaling = 1; // use integer scaling for the user interface
c.idle_ms = 10; // default to high performance
c.wait_for_device = 1; // default to exit if device disconnected
- c.wait_packets = 512; // amount of empty command queue reads before assuming device disconnected
+ c.wait_packets = 256; // amount of empty command queue reads before assuming device disconnected
c.audio_enabled = 0; // route M8 audio to default output
c.audio_buffer_size = 0; // requested audio buffer size in samples: 0 = let SDL decide
c.audio_device_name = NULL; // Use this device, leave NULL to use the default output device
--- a/src/input.c
+++ b/src/input.c
@@ -198,6 +198,7 @@
break;
case SDL_EVENT_WINDOW_RESIZED:
+ case SDL_EVENT_WINDOW_MOVED:
renderer_fix_texture_scaling_after_window_resize();
break;
--
⑨