fix crash at session close/exit if a midi-control-surface is used
[ardour.git] / libs / ardour / session_midi.cc
index ea6dfe81cf17f6bd5f9bb5542103af04f39a90b5..47c7bd4c4037d60aa327366bd84057adbd86e667 100644 (file)
@@ -417,7 +417,7 @@ Session::send_full_time_code (framepos_t const t, MIDI::pframes_t nframes)
        msg[4] = 0x1;
        msg[9] = 0xf7;
 
-       msg[5] = mtc_timecode_bits | timecode.hours;
+       msg[5] = mtc_timecode_bits | (timecode.hours % 24);
        msg[6] = timecode.minutes;
        msg[7] = timecode.seconds;
        msg[8] = timecode.frames;
@@ -597,6 +597,7 @@ Session::send_song_position_pointer (framepos_t)
 int
 Session::start_midi_thread ()
 {
+       if (midi_control_ui) { return 0; }
        midi_control_ui = new MidiControlUI (*this);
        midi_control_ui->run ();
        return 0;
@@ -644,3 +645,27 @@ Session::mmc_input_port () const
 {
        return _midi_ports->mmc_input_port ();
 }
+
+MIDI::Port*
+Session::scene_output_port () const
+{
+       return _midi_ports->scene_output_port ();
+}
+
+MIDI::Port*
+Session::scene_input_port () const
+{
+       return _midi_ports->scene_input_port ();
+}
+
+boost::shared_ptr<MidiPort>
+Session::scene_in () const
+{
+       return _midi_ports->scene_in ();
+}
+
+boost::shared_ptr<MidiPort>
+Session::scene_out () const
+{
+       return _midi_ports->scene_out ();
+}