From 5b108f6f7db10db7a48ccd53a57852bfb4a9d748 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 24 Nov 2014 19:29:10 +0200 Subject: [PATCH] remove port_sources management from MidiControlUI This was necessary due to a bug/design issue between Glibmm and Glib (see https://bugzilla.gnome.org/show_bug.cgi?id=561885) but the problem needs to be managed by the *creator* of the IOSource and that has now moved inside CrossThreadChannel. --- libs/ardour/ardour/midi_ui.h | 2 -- libs/ardour/midi_ui.cc | 15 --------------- 2 files changed, 17 deletions(-) diff --git a/libs/ardour/ardour/midi_ui.h b/libs/ardour/ardour/midi_ui.h index 85a8a15e21..9b9ed1153a 100644 --- a/libs/ardour/ardour/midi_ui.h +++ b/libs/ardour/ardour/midi_ui.h @@ -59,8 +59,6 @@ class LIBARDOUR_API MidiControlUI : public AbstractUI void do_request (MidiUIRequest*); private: - typedef std::list PortSources; - PortSources port_sources; ARDOUR::Session& _session; bool midi_input_handler (Glib::IOCondition, AsyncMIDIPort*); diff --git a/libs/ardour/midi_ui.cc b/libs/ardour/midi_ui.cc index d5a0b2b444..ecdcb303e8 100644 --- a/libs/ardour/midi_ui.cc +++ b/libs/ardour/midi_ui.cc @@ -97,21 +97,11 @@ MidiControlUI::midi_input_handler (IOCondition ioc, AsyncMIDIPort* port) void MidiControlUI::clear_ports () { - for (PortSources::iterator i = port_sources.begin(); i != port_sources.end(); ++i) { - g_source_destroy (*i); - g_source_unref (*i); - } - - port_sources.clear (); } void MidiControlUI::reset_ports () { - if (!port_sources.empty()) { - return; - } - vector ports; AsyncMIDIPort* p; @@ -139,11 +129,6 @@ MidiControlUI::reset_ports () if (psrc) { psrc->connect (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), *pi)); psrc->attach (_main_loop->get_context()); - - // glibmm hack: for now, store only the GSource* - - port_sources.push_back (psrc->gobj()); - g_source_ref (psrc->gobj()); } } }