faderport (classic): fix a variety of SNAFUs since switch to MidiSurface (#9439)
This commit is contained in:
parent
56772b8156
commit
09b919bb85
@ -157,6 +157,7 @@ FaderPort::FaderPort (Session& s)
|
||||
get_button (Output).set_action (boost::bind (&FaderPort::use_master, this), true);
|
||||
get_button (Output).set_action (boost::bind (&FaderPort::use_monitor, this), true, ShiftDown);
|
||||
|
||||
run_event_loop ();
|
||||
port_setup ();
|
||||
}
|
||||
|
||||
@ -420,7 +421,7 @@ FaderPort::handle_midi_sysex (MIDI::Parser &p, MIDI::byte *buf, size_t sz)
|
||||
int
|
||||
FaderPort::set_active (bool yn)
|
||||
{
|
||||
DEBUG_TRACE (DEBUG::FaderPort, string_compose("Faderport::set_active init with yn: '%1'\n", yn));
|
||||
DEBUG_TRACE (DEBUG::FaderPort, string_compose("Faderport::set_active init with yn: '%1' while active = %2\n", yn, active()));
|
||||
|
||||
if (yn == active()) {
|
||||
return 0;
|
||||
@ -428,19 +429,9 @@ FaderPort::set_active (bool yn)
|
||||
|
||||
if (yn) {
|
||||
|
||||
/* start event loop */
|
||||
|
||||
BaseUI::run ();
|
||||
|
||||
connect_session_signals ();
|
||||
|
||||
Glib::RefPtr<Glib::TimeoutSource> blink_timeout = Glib::TimeoutSource::create (200); // milliseconds
|
||||
blink_connection = blink_timeout->connect (sigc::mem_fun (*this, &FaderPort::blink));
|
||||
blink_timeout->attach (main_loop()->get_context());
|
||||
|
||||
Glib::RefPtr<Glib::TimeoutSource> periodic_timeout = Glib::TimeoutSource::create (100); // milliseconds
|
||||
periodic_connection = periodic_timeout->connect (sigc::mem_fun (*this, &FaderPort::periodic));
|
||||
periodic_timeout->attach (main_loop()->get_context());
|
||||
if (device_acquire ()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
} else {
|
||||
/* Control Protocol Manager never calls us with false, but
|
||||
@ -652,15 +643,41 @@ FaderPort::output_port_name () const
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
FaderPort::run_event_loop ()
|
||||
{
|
||||
DEBUG_TRACE (DEBUG::FaderPort, "start event loop\n");
|
||||
BaseUI::run ();
|
||||
}
|
||||
|
||||
void
|
||||
FaderPort::stop_event_loop ()
|
||||
{
|
||||
DEBUG_TRACE (DEBUG::FaderPort, "stop event loop\n");
|
||||
BaseUI::quit ();
|
||||
}
|
||||
|
||||
int
|
||||
FaderPort::begin_using_device()
|
||||
{
|
||||
DEBUG_TRACE (DEBUG::FaderPort, "sending device inquiry message...\n");
|
||||
DEBUG_TRACE (DEBUG::FaderPort, "begin using device\n");
|
||||
|
||||
connect_session_signals ();
|
||||
|
||||
Glib::RefPtr<Glib::TimeoutSource> blink_timeout = Glib::TimeoutSource::create (200); // milliseconds
|
||||
blink_connection = blink_timeout->connect (sigc::mem_fun (*this, &FaderPort::blink));
|
||||
blink_timeout->attach (main_loop()->get_context());
|
||||
|
||||
Glib::RefPtr<Glib::TimeoutSource> periodic_timeout = Glib::TimeoutSource::create (100); // milliseconds
|
||||
periodic_connection = periodic_timeout->connect (sigc::mem_fun (*this, &FaderPort::periodic));
|
||||
periodic_timeout->attach (main_loop()->get_context());
|
||||
|
||||
if (MIDISurface::begin_using_device ()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
DEBUG_TRACE (DEBUG::FaderPort, "sending device inquiry message...\n");
|
||||
|
||||
/* send device inquiry */
|
||||
|
||||
MIDI::byte buf[6];
|
||||
@ -685,10 +702,6 @@ FaderPort::stop_using_device ()
|
||||
stripable_connections.drop_connections ();
|
||||
periodic_connection.disconnect ();
|
||||
|
||||
#if 0
|
||||
stripable_connections.drop_connections ();
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1114,3 +1127,21 @@ FaderPort::get_action (ButtonID id, bool press, ButtonState bs)
|
||||
return get_button(id).get_action (press, bs);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
FaderPort::notify_record_state_changed ()
|
||||
{
|
||||
map_recenable_state ();
|
||||
}
|
||||
|
||||
void
|
||||
FaderPort::notify_transport_state_changed()
|
||||
{
|
||||
map_transport_state ();
|
||||
}
|
||||
|
||||
void
|
||||
FaderPort::notify_loop_state_changed ()
|
||||
{
|
||||
map_transport_state ();
|
||||
}
|
||||
|
@ -138,6 +138,10 @@ class FaderPort : public MIDISurface {
|
||||
void set_action (ButtonID, std::string const& action_name, bool on_press, FaderPort::ButtonState = ButtonState (0));
|
||||
std::string get_action (ButtonID, bool on_press, FaderPort::ButtonState = ButtonState (0));
|
||||
|
||||
void notify_record_state_changed ();
|
||||
void notify_transport_state_changed ();
|
||||
void notify_loop_state_changed ();
|
||||
|
||||
private:
|
||||
std::shared_ptr<ARDOUR::Stripable> _current_stripable;
|
||||
std::weak_ptr<ARDOUR::Stripable> pre_master_stripable;
|
||||
@ -162,9 +166,10 @@ class FaderPort : public MIDISurface {
|
||||
|
||||
int begin_using_device ();
|
||||
int stop_using_device ();
|
||||
|
||||
int device_acquire () { return 0; }
|
||||
void device_release () {}
|
||||
void device_release () { }
|
||||
void run_event_loop ();
|
||||
void stop_event_loop ();
|
||||
|
||||
ButtonState button_state;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user