From: werner s. <wsc...@us...> - 2005-07-17 12:15:36
|
Update of /cvsroot/lmuse/muse/muse In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24174/muse Modified Files: importmidi.cpp route.cpp route.h seqmsg.cpp song.cpp Log Message: remove all routes when deleting software synthesizer Index: seqmsg.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/seqmsg.cpp,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** seqmsg.cpp 11 May 2005 14:18:42 -0000 1.53 --- seqmsg.cpp 17 Jul 2005 12:15:24 -0000 1.54 *************** *** 21,24 **** --- 21,25 ---- #include "midi.h" #include "midictrl.h" + #include "midiplugin.h" //--------------------------------------------------------- *************** *** 223,227 **** Route r = *ii; if ((r.type == Route::AUDIOPORT) && (r.channel == i)) { ! msgRemoveRoute(r, Route(node,i)); break; } --- 224,228 ---- Route r = *ii; if ((r.type == Route::AUDIOPORT) && (r.channel == i)) { ! msgRemoveRoute(r, Route(node,i, Route::TRACK)); break; } *************** *** 246,250 **** Route r = *ii; if ((r.type == Route::AUDIOPORT) && (r.channel == i)) { ! msgRemoveRoute(Route(node,i), r); break; } --- 247,251 ---- Route r = *ii; if ((r.type == Route::AUDIOPORT) && (r.channel == i)) { ! msgRemoveRoute(Route(node,i,Route::TRACK), r); break; } Index: importmidi.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/importmidi.cpp,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** importmidi.cpp 26 May 2005 10:52:18 -0000 1.40 --- importmidi.cpp 17 Jul 2005 12:15:23 -0000 1.41 *************** *** 125,129 **** //TODO3 if ((*t)->isDrumTrack) // track->setUseDrumMap(true); ! addRoute(Route(track, -1), Route(outPort->channel(channel), -1)); EventList* mel = track->events(); --- 125,129 ---- //TODO3 if ((*t)->isDrumTrack) // track->setUseDrumMap(true); ! addRoute(Route(track, -1, Route::TRACK), Route(outPort->channel(channel), -1, Route::TRACK)); EventList* mel = track->events(); *************** *** 170,174 **** // MidiTrack* track = new MidiTrack(); ! addRoute(Route(track, -1), Route(outPort->channel(0), -1)); EventList* mel = track->events(); buildMidiEventList(mel, el, track, division, true); --- 170,174 ---- // MidiTrack* track = new MidiTrack(); ! addRoute(Route(track, -1, Route::TRACK), Route(outPort->channel(0), -1, Route::TRACK)); EventList* mel = track->events(); buildMidiEventList(mel, el, track, division, true); Index: route.h =================================================================== RCS file: /cvsroot/lmuse/muse/muse/route.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** route.h 3 May 2005 20:45:45 -0000 1.10 --- route.h 17 Jul 2005 12:15:24 -0000 1.11 *************** *** 27,31 **** RouteType type; ! Route(Track* t, int ch); Route(const QString&, int ch, RouteType); Route(Port, RouteType); --- 27,31 ---- RouteType type; ! // Route(Track* t, int ch); Route(const QString&, int ch, RouteType); Route(Port, RouteType); Index: song.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/song.cpp,v retrieving revision 1.118 retrieving revision 1.119 diff -C2 -d -r1.118 -r1.119 *** song.cpp 8 Jun 2005 14:53:44 -0000 1.118 --- song.cpp 17 Jul 2005 12:15:24 -0000 1.119 *************** *** 236,239 **** --- 236,240 ---- case Track::MIDI_IN: case Track::MIDI_CHANNEL: + case Track::MIDI_SYNTI: break; case Track::MIDI: *************** *** 243,247 **** for (iMidiChannel i = _midiChannel.begin(); i != _midiChannel.end(); ++i) { if ((*i)->noInRoute()) { ! track->outRoutes()->push_back(Route(*i, -1)); break; } --- 244,248 ---- for (iMidiChannel i = _midiChannel.begin(); i != _midiChannel.end(); ++i) { if ((*i)->noInRoute()) { ! track->outRoutes()->push_back(Route(*i, -1, Route::TRACK)); break; } *************** *** 252,256 **** for (iMidiInPort i = _midiInPorts.begin(); i != _midiInPorts.end(); ++i) { for (int ch = 0; ch < MIDI_CHANNELS; ++ch) ! track->inRoutes()->push_back(Route(*i, ch)); } break; --- 253,257 ---- for (iMidiInPort i = _midiInPorts.begin(); i != _midiInPorts.end(); ++i) { for (int ch = 0; ch < MIDI_CHANNELS; ++ch) ! track->inRoutes()->push_back(Route(*i, ch, Route::TRACK)); } break; *************** *** 260,264 **** case Track::AUDIO_SOFTSYNTH: if (ao) ! track->outRoutes()->push_back(Route(ao, -1)); break; case Track::AUDIO_INPUT: --- 261,265 ---- case Track::AUDIO_SOFTSYNTH: if (ao) ! track->outRoutes()->push_back(Route(ao, -1, Route::TRACK)); break; case Track::AUDIO_INPUT: *************** *** 274,278 **** delete op; if (ao) ! track->outRoutes()->push_back(Route(ao, -1)); } break; --- 275,279 ---- delete op; if (ao) ! track->outRoutes()->push_back(Route(ao, -1, Route::TRACK)); } break; *************** *** 1800,1804 **** // ! Route src(track, -1); if (track->type() == Track::AUDIO_OUTPUT || track->type() == Track::MIDI_OUT) { const RouteList* rl = track->inRoutes(); --- 1801,1805 ---- // ! Route src(track, -1, Route::TRACK); if (track->type() == Track::AUDIO_OUTPUT || track->type() == Track::MIDI_OUT) { const RouteList* rl = track->inRoutes(); *************** *** 1907,1935 **** } // _tracks.erase(track); ! if (track->isMidiTrack()) ! return; // // remove routes // ! ! AudioTrack* at = (AudioTrack*)track; ! Route src(at, -1); ! if (at->type() == Track::AUDIO_OUTPUT) { ! const RouteList* rl = at->inRoutes(); for (ciRoute r = rl->begin(); r != rl->end(); ++r) r->track->outRoutes()->removeRoute(src); } ! else if (at->type() == Track::AUDIO_INPUT) { ! const RouteList* rl = at->outRoutes(); for (ciRoute r = rl->begin(); r != rl->end(); ++r) r->track->inRoutes()->removeRoute(src); } else { ! const RouteList* rl = at->inRoutes(); ! for (ciRoute r = rl->begin(); r != rl->end(); ++r) r->track->outRoutes()->removeRoute(src); ! rl = at->outRoutes(); ! for (ciRoute r = rl->begin(); r != rl->end(); ++r) r->track->inRoutes()->removeRoute(src); } } --- 1908,1944 ---- } // _tracks.erase(track); ! // if (track->isMidiTrack()) ! // return; ! printf("remove routes for <%s>\n", track->name().latin1()); // // remove routes // ! Route src(track, -1, Route::TRACK); ! if (track->type() == Track::AUDIO_SOFTSYNTH) ! src.type = Route::SYNTIPORT; ! if (track->type() == Track::AUDIO_OUTPUT) { ! const RouteList* rl = track->inRoutes(); for (ciRoute r = rl->begin(); r != rl->end(); ++r) r->track->outRoutes()->removeRoute(src); } ! else if (track->type() == Track::AUDIO_INPUT) { ! const RouteList* rl = track->outRoutes(); for (ciRoute r = rl->begin(); r != rl->end(); ++r) r->track->inRoutes()->removeRoute(src); } else { ! const RouteList* rl = track->inRoutes(); ! for (ciRoute r = rl->begin(); r != rl->end(); ++r) { ! printf("remove route from out <%s> %d:\n", ! r->track->name().latin1(), r->track->outRoutes()->size()); ! r->dump(); r->track->outRoutes()->removeRoute(src); ! } ! rl = track->outRoutes(); ! for (ciRoute r = rl->begin(); r != rl->end(); ++r) { r->track->inRoutes()->removeRoute(src); + printf("remove route from in:\n"); + r->dump(); + } } } Index: route.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/route.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** route.cpp 16 Jul 2005 11:02:24 -0000 1.28 --- route.cpp 17 Jul 2005 12:15:24 -0000 1.29 *************** *** 40,44 **** Track* track = *i; if (track->name() == s) ! return Route(track, channel); } MidiChannelList* mc = song->midiChannel(); --- 40,44 ---- Track* track = *i; if (track->name() == s) ! return Route(track, channel, Route::TRACK); } MidiChannelList* mc = song->midiChannel(); *************** *** 46,50 **** MidiChannel* t = *i; if (t->name() == s) ! return Route(t, channel); } } --- 46,50 ---- MidiChannel* t = *i; if (t->name() == s) ! return Route(t, channel, Route::TRACK); } } *************** *** 81,85 **** printf("name2route: %s: <%s> not found\n", names[t], rn.latin1()); abort(); ! return Route((Track*) 0, channel); } --- 81,85 ---- printf("name2route: %s: <%s> not found\n", names[t], rn.latin1()); abort(); ! return Route((Track*) 0, channel, Route::TRACK); } *************** *** 109,112 **** --- 109,113 ---- } + #if 0 Route::Route(Track* t, int ch) { *************** *** 115,118 **** --- 116,120 ---- type = TRACK; } + #endif Route::Route(const QString& s, int ch, RouteType t) *************** *** 147,153 **** return false; ! // printf("addRoute %s.%d:<%s> %s.%d:<%s>\n", ! // src.tname(), src.channel, src.name().latin1(), ! // dst.tname(), dst.channel, dst.name().latin1()); if (src.type == Route::AUDIOPORT || src.type == Route::MIDIPORT) { --- 149,155 ---- return false; ! printf("addRoute %s.%d:<%s> %s.%d:<%s>\n", ! src.tname(), src.channel, src.name().latin1(), ! dst.tname(), dst.channel, dst.name().latin1()); if (src.type == Route::AUDIOPORT || src.type == Route::MIDIPORT) { *************** *** 168,173 **** inRoutes->push_back(src); } ! else if (dst.type == Route::AUDIOPORT || dst.type == Route::MIDIPORT ! || dst.type == Route::SYNTIPORT) { if (src.type != Route::TRACK) { fprintf(stderr, "addRoute: bad route 3\n"); --- 170,175 ---- inRoutes->push_back(src); } ! else if (dst.type == Route::AUDIOPORT || dst.type == Route::MIDIPORT) { ! // || dst.type == Route::SYNTIPORT) { if (src.type != Route::TRACK) { fprintf(stderr, "addRoute: bad route 3\n"); *************** *** 188,195 **** } else { RouteList* outRoutes = src.track->outRoutes(); for (iRoute i = outRoutes->begin(); i != outRoutes->end(); ++i) { ! if (*i == dst) // route already there return true; } outRoutes->push_back(dst); --- 190,200 ---- } else { + printf(" mops1\n"); RouteList* outRoutes = src.track->outRoutes(); for (iRoute i = outRoutes->begin(); i != outRoutes->end(); ++i) { ! if (*i == dst) { // route already there ! printf(" route already there\n"); return true; + } } outRoutes->push_back(dst); *************** *** 202,205 **** --- 207,211 ---- else inRoutes->insert(inRoutes->begin(), src); + printf(" outs %d ins %d\n", outRoutes->size(), inRoutes->size()); } return true; *************** *** 234,239 **** } } ! else if (dst.type == Route::AUDIOPORT || dst.type == Route::MIDIPORT ! | dst.type == Route::SYNTIPORT) { if (src.type != Route::TRACK) { fprintf(stderr, "removeRoute: bad route 3\n"); --- 240,245 ---- } } ! else if (dst.type == Route::AUDIOPORT || dst.type == Route::MIDIPORT) { ! // | dst.type == Route::SYNTIPORT) { if (src.type != Route::TRACK) { fprintf(stderr, "removeRoute: bad route 3\n"); *************** *** 379,387 **** QDomElement e = node.toElement(); if (e.tagName() == "srcNode") { ! st = e.attribute("type"); src = e.text(); } else if (e.tagName() == "dstNode") { ! dt = e.attribute("type"); dst = e.text(); } --- 385,393 ---- QDomElement e = node.toElement(); if (e.tagName() == "srcNode") { ! st = e.attribute("type", "TRACK"); src = e.text(); } else if (e.tagName() == "dstNode") { ! dt = e.attribute("type", "TRACK"); dst = e.text(); } *************** *** 397,400 **** --- 403,412 ---- else if (st == "MIDIPORT") stype = Route::MIDIPORT; + else if (st == "SYNTIPORT") + stype = Route::SYNTIPORT; + else { + printf("Song::readRoute(): unknown type <%s>\n", dt.latin1()); + dtype = Route::TRACK; + } if (dt == "TRACK") *************** *** 407,410 **** --- 419,426 ---- dtype = Route::SYNTIPORT; } + else { + printf("Song::readRoute(): unknown type <%s>\n", dt.latin1()); + dtype = Route::TRACK; + } Route s = name2route(src, stype); Route d = name2route(dst, dtype); *************** *** 424,428 **** } } ! printf("internal error: cannot remove Route\n"); } --- 440,450 ---- } } ! printf("internal error: cannot remove Route\n "); ! r.dump(); ! for (iRoute i = begin(); i != end(); ++i) { ! printf(" "); ! i->dump(); ! } ! printf(" -----\n"); } *************** *** 433,438 **** void Route::dump() const { ! printf("Route %p dump: <%s> channel %d, type %d\n", ! track, name().latin1(), channel, type); } --- 455,460 ---- void Route::dump() const { ! printf("Route %p dump: <%s> channel %d, type %s\n", ! track, name().latin1(), channel, tname()); } |