fix some thinkos with audio/midi port counting.

(there's more to come w/multiple midi ports grouped left)
This commit is contained in:
Robin Gareus 2016-04-02 03:20:43 +02:00
parent 2f62309d44
commit c44fb3e662
2 changed files with 21 additions and 11 deletions

View file

@ -179,11 +179,13 @@ PluginPinDialog::update_elements ()
_selection.reset(); _selection.reset();
for (uint32_t i = 0; i < _in.n_total (); ++i) { for (uint32_t i = 0; i < _in.n_total (); ++i) {
_elements.push_back (CtrlWidget (Input, (i < _in.n_midi () ? DataType::MIDI : DataType::AUDIO), i)); int id = (i < _in.n_midi ()) ? i : i - _in.n_midi ();
_elements.push_back (CtrlWidget (Input, (i < _in.n_midi () ? DataType::MIDI : DataType::AUDIO), id));
} }
for (uint32_t i = 0; i < _out.n_total (); ++i) { for (uint32_t i = 0; i < _out.n_total (); ++i) {
_elements.push_back (CtrlWidget (Output, (i < _out.n_midi () ? DataType::MIDI : DataType::AUDIO), i)); int id = (i < _out.n_midi ()) ? i : i - _out.n_midi ();
_elements.push_back (CtrlWidget (Output, (i < _out.n_midi () ? DataType::MIDI : DataType::AUDIO), id));
} }
for (uint32_t n = 0; n < _n_plugins; ++n) { for (uint32_t n = 0; n < _n_plugins; ++n) {
@ -214,16 +216,24 @@ PluginPinDialog::update_element_pos ()
for (CtrlElemList::iterator i = _elements.begin(); i != _elements.end(); ++i) { for (CtrlElemList::iterator i = _elements.begin(); i != _elements.end(); ++i) {
switch (i->e->ct) { switch (i->e->ct) {
case Input: case Input:
i->x = rint ((i->e->id + 1) * _width / (1. + _in.n_total ())) - 5.5; {
i->y = y_in - 25; uint32_t idx = i->e->id;
i->w = 10; if (i->e->dt == DataType::AUDIO) { idx += _in.n_midi (); }
i->h = 25; i->x = rint ((idx + 1) * _width / (1. + _in.n_total ())) - 5.5;
i->y = y_in - 25;
i->w = 10;
i->h = 25;
}
break; break;
case Output: case Output:
i->x = rint ((i->e->id + 1) * _width / (1. + _out.n_total ())) - 5.5; {
i->y = y_out; uint32_t idx = i->e->id;
i->w = 10; if (i->e->dt == DataType::AUDIO) { idx += _out.n_midi (); }
i->h = 25; i->x = rint ((idx + 1) * _width / (1. + _out.n_total ())) - 5.5;
i->y = y_out;
i->w = 10;
i->h = 25;
}
break; break;
case Sink: case Sink:
{ {

View file

@ -1157,7 +1157,7 @@ ProcessorEntry::RoutingIcon::expose_map (cairo_t* cr, const double width, const
bool valid_src; bool valid_src;
uint32_t src = _f_out_map.get_src (is_midi ? DataType::MIDI : DataType::AUDIO, idx, &valid_src); uint32_t src = _f_out_map.get_src (is_midi ? DataType::MIDI : DataType::AUDIO, idx, &valid_src);
if (!valid_src) { if (!valid_src) {
double x = pin_x_pos (i, width, pc_in, pc_in_midi, is_midi); double x = pin_x_pos (i, width, pc_in, 0, false);
draw_gnd (cr, x, height, is_midi); draw_gnd (cr, x, height, is_midi);
continue; continue;
} }