From: terminator356 <ter...@us...> - 2009-04-02 02:09:39
|
Update of /cvsroot/lmuse/muse/muse/driver In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv18625/muse/driver Modified Files: Tag: REL07 alsamidi.cpp Log Message: See ChangeLog Index: alsamidi.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/driver/alsamidi.cpp,v retrieving revision 1.8.2.3 retrieving revision 1.8.2.4 diff -C2 -d -r1.8.2.3 -r1.8.2.4 *** alsamidi.cpp 1 Apr 2009 01:37:11 -0000 1.8.2.3 --- alsamidi.cpp 2 Apr 2009 02:09:26 -0000 1.8.2.4 *************** *** 50,77 **** QString MidiAlsaDevice::open() ! { _openFlags &= _rwFlags; // restrict to available bits snd_seq_port_subscribe_t* subs; snd_seq_port_subscribe_alloca(&subs); // subscribe for writing ! if (_openFlags & 1) { snd_seq_port_subscribe_set_sender(subs, &musePort); snd_seq_port_subscribe_set_dest(subs, &adr); ! int error = snd_seq_subscribe_port(alsaSeq, subs); ! if (error < 0) ! return QString("Play: ")+QString(snd_strerror(error)); ! } // subscribe for reading ! if (_openFlags & 2) { snd_seq_port_subscribe_set_dest(subs, &musePort); ! snd_seq_port_subscribe_set_sender(subs, &adr); ! int error = snd_seq_subscribe_port(alsaSeq, subs); ! if (error < 0) ! return QString("Rec: ") + QString(snd_strerror(error)); ! } ! return QString("OK"); } //--------------------------------------------------------- --- 50,88 ---- QString MidiAlsaDevice::open() ! { _openFlags &= _rwFlags; // restrict to available bits snd_seq_port_subscribe_t* subs; + // Allocated on stack, no need to call snd_seq_port_subscribe_free() later. snd_seq_port_subscribe_alloca(&subs); // subscribe for writing ! if (_openFlags & 1) ! { snd_seq_port_subscribe_set_sender(subs, &musePort); snd_seq_port_subscribe_set_dest(subs, &adr); ! // Not already subscribed (or error)? Then try subscribing. ! //if(snd_seq_get_port_subscription(alsaSeq, subs) < 0) ! { ! int error = snd_seq_subscribe_port(alsaSeq, subs); ! if (error < 0) ! return QString("Play: ")+QString(snd_strerror(error)); ! } ! } // subscribe for reading ! if (_openFlags & 2) ! { snd_seq_port_subscribe_set_dest(subs, &musePort); ! snd_seq_port_subscribe_set_sender(subs, &adr); ! // Not already subscribed (or error)? Then try subscribing. ! //if(snd_seq_get_port_subscription(alsaSeq, subs) < 0) ! { ! int error = snd_seq_subscribe_port(alsaSeq, subs); ! if (error < 0) ! return QString("Rec: ") + QString(snd_strerror(error)); ! } } + return QString("OK"); + } //--------------------------------------------------------- *************** *** 80,99 **** void MidiAlsaDevice::close() ! { snd_seq_port_subscribe_t* subs; ! snd_seq_port_subscribe_alloca(&subs); ! if (_openFlags & 1) { snd_seq_port_subscribe_set_sender(subs, &musePort); snd_seq_port_subscribe_set_dest(subs, &adr); ! snd_seq_unsubscribe_port(alsaSeq, subs); ! } ! if (_openFlags & 2) { ! snd_seq_port_subscribe_set_dest(subs, &musePort); ! snd_seq_port_subscribe_set_sender(subs, &adr); ! snd_seq_unsubscribe_port(alsaSeq, subs); ! } } //--------------------------------------------------------- --- 91,133 ---- void MidiAlsaDevice::close() ! { snd_seq_port_subscribe_t* subs; ! // Allocated on stack, no need to call snd_seq_port_subscribe_free() later. snd_seq_port_subscribe_alloca(&subs); ! ! // Changed by T356. This function appears to be called only by MidiPort::setMidiDevice(), ! // which closes then opens the device. ! // Because the open flags are set BEFORE setMidiDevice() is called, we must do things this way. ! // It means that we cannot call close() with 'existing' open flags, we must set the flags ! // to the desired state, THEN call close(). ! ! //if (_openFlags & 1) { ! //if (!(_openFlags & 1)) ! { snd_seq_port_subscribe_set_sender(subs, &musePort); snd_seq_port_subscribe_set_dest(subs, &adr); ! ! // Already subscribed? Then unsubscribe. ! if(!snd_seq_get_port_subscription(alsaSeq, subs)) ! { ! if(snd_seq_unsubscribe_port(alsaSeq, subs) != 0) ! printf("MidiAlsaDevice::close Error unsubscribing alsa midi port for writing\n"); ! } ! } ! //if (_openFlags & 2) { ! //if (!(_openFlags & 2)) ! { ! snd_seq_port_subscribe_set_dest(subs, &musePort); ! snd_seq_port_subscribe_set_sender(subs, &adr); ! ! // Already subscribed? Then unsubscribe. ! if(!snd_seq_get_port_subscription(alsaSeq, subs)) ! { ! if(snd_seq_unsubscribe_port(alsaSeq, subs) != 0) ! printf("MidiAlsaDevice::close Error unsubscribing alsa midi port for reading\n"); ! } } + } //--------------------------------------------------------- |