void MediaNodePanel::updateIOJacks() { D_METHOD(("MediaNodePanel::updateIOJacks()\n")); // remove all free inputs/outputs, they may be outdated for (uint32 i = 0; i < CountItems(); i++) { MediaJack *jack = dynamic_cast<MediaJack *>(ItemAt(i)); if (jack && !jack->isConnected()) { RemoveItem(jack); delete jack; i--; // account for reindexing in the BList } } // add free inputs if (ref->kind() & B_BUFFER_CONSUMER) { vector<media_input> freeInputs; ref->getFreeInputs(freeInputs); for (uint32 i = 0; i < freeInputs.size(); i++) { MediaJack *jack; AddItem(jack = new MediaJack(freeInputs[i])); } } // add free outputs if (ref->kind() & B_BUFFER_PRODUCER) { vector<media_output> freeOutputs; ref->getFreeOutputs(freeOutputs); for (uint32 i = 0; i < freeOutputs.size(); i++) { MediaJack *jack; AddItem(jack = new MediaJack(freeOutputs[i])); } } // the supported media types might have changed -> this could // require changing the icon _updateIcon(dynamic_cast<MediaRoutingView *>(view())->getLayout()); }