mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +01:00
for an ipMIDI surface, make the GSource used for input hold the only reference on the GUIChannel.
This commit is contained in:
parent
7e10c21468
commit
bda0ba173c
3 changed files with 9 additions and 12 deletions
|
|
@ -713,7 +713,7 @@ MackieControlProtocol::set_device (const string& device_name)
|
||||||
|
|
||||||
switch_banks (0, true);
|
switch_banks (0, true);
|
||||||
|
|
||||||
// DeviceChanged ();
|
DeviceChanged ();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -819,8 +819,13 @@ MackieControlProtocol::create_surfaces ()
|
||||||
|
|
||||||
if ((fd = input_port.selectable ()) >= 0) {
|
if ((fd = input_port.selectable ()) >= 0) {
|
||||||
|
|
||||||
surface->input_channel = g_io_channel_unix_new (fd);
|
GIOChannel* ioc = g_io_channel_unix_new (fd);
|
||||||
surface->input_source = g_io_create_watch (surface->input_channel, GIOCondition (G_IO_IN|G_IO_HUP|G_IO_ERR));
|
surface->input_source = g_io_create_watch (ioc, GIOCondition (G_IO_IN|G_IO_HUP|G_IO_ERR));
|
||||||
|
|
||||||
|
/* make surface's input source now hold the
|
||||||
|
* only reference on the IO channel
|
||||||
|
*/
|
||||||
|
g_io_channel_unref (ioc);
|
||||||
|
|
||||||
/* hack up an object so that in the callback from the event loop
|
/* hack up an object so that in the callback from the event loop
|
||||||
we have both the MackieControlProtocol and the input port.
|
we have both the MackieControlProtocol and the input port.
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,6 @@ Surface::Surface (MackieControlProtocol& mcp, const std::string& device_name, ui
|
||||||
, _master_fader (0)
|
, _master_fader (0)
|
||||||
, _last_master_gain_written (-0.0f)
|
, _last_master_gain_written (-0.0f)
|
||||||
, connection_state (0)
|
, connection_state (0)
|
||||||
, input_channel (0)
|
|
||||||
, input_source (0)
|
, input_source (0)
|
||||||
{
|
{
|
||||||
DEBUG_TRACE (DEBUG::MackieControl, "Surface::Surface init\n");
|
DEBUG_TRACE (DEBUG::MackieControl, "Surface::Surface init\n");
|
||||||
|
|
@ -169,11 +168,6 @@ Surface::~Surface ()
|
||||||
input_source = 0;
|
input_source = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (input_channel) {
|
|
||||||
g_io_channel_unref (input_channel);
|
|
||||||
input_channel = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
delete _jog_wheel;
|
delete _jog_wheel;
|
||||||
delete _port;
|
delete _port;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -204,9 +204,7 @@ public:
|
||||||
MidiByteArray display_line (std::string const& msg, int line_num);
|
MidiByteArray display_line (std::string const& msg, int line_num);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/* IP MIDI devices need to keep a handle on these */
|
/* IP MIDI devices need to keep a handle on this and destroy it */
|
||||||
|
|
||||||
GIOChannel* input_channel;
|
|
||||||
GSource* input_source;
|
GSource* input_source;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue