[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/kmid/alsa
From: Pedro Lopez-Cabanillas <pedro.lopez.cabanillas () gmail ! com>
Date: 2010-06-08 5:55:25
Message-ID: 20100608055525.48CD9AC8CE () svn ! kde ! org
[Download RAW message or body]
SVN commit 1135743 by pedrol:
snd_seq_event_output_direct() is not thread safe, this workaround uses two ALSA \
clients: one in the player thread, and another one for output.
CCBUG: 240391
M +8 -2 alsamidiobject.cpp
M +4 -11 alsamidioutput.cpp
--- trunk/extragear/multimedia/kmid/alsa/alsamidiobject.cpp #1135742:1135743
@@ -158,9 +158,15 @@
void ALSAMIDIObject::initialize(ALSAMIDIOutput *output)
{
d->m_out = output;
- d->m_client = output->client();
+ d->m_client = new MidiClient(this);
+ d->m_client->open();
+ d->m_client->setClientName("KMid Internal");
d->m_queue = d->m_client->getQueue();
- d->m_port = output->loopbackPort();
+ d->m_port = d->m_client->createPort();
+ d->m_port->setPortName("loopback");
+ d->m_port->setCapability( SND_SEQ_PORT_CAP_WRITE |
+ SND_SEQ_PORT_CAP_NO_EXPORT );
+ d->m_port->setPortType( SND_SEQ_PORT_TYPE_SPECIFIC );
d->m_clientId = d->m_client->getClientId();
d->m_queueId = d->m_queue->getId();
d->m_portId = d->m_port->getPortId();
--- trunk/extragear/multimedia/kmid/alsa/alsamidioutput.cpp #1135742:1135743
@@ -40,7 +40,6 @@
m_out(q),
m_client(0),
m_port(0),
- m_loopbkport(0),
m_mapper(0),
m_portId(0),
m_pitchShift(0),
@@ -60,7 +59,6 @@
ALSAMIDIOutput *m_out;
MidiClient *m_client;
MidiPort *m_port;
- MidiPort *m_loopbkport;
MidiMapper *m_mapper;
int m_portId;
int m_pitchShift;
@@ -271,6 +269,8 @@
if ( d->m_clientFilter &&
name.startsWith(QLatin1String("Virtual Raw MIDI")) )
continue;
+ if ( name.startsWith(QLatin1String("KMid")) )
+ continue;
d->m_outputDevices << name;
}
if (!d->m_currentOutput.isEmpty() &&
@@ -434,20 +434,13 @@
MidiClient* ALSAMIDIOutput::client() const
{
- return d->m_client;
+ return 0;
}
MidiPort* ALSAMIDIOutput::loopbackPort()
{
- if (d->m_loopbkport == NULL) {
- d->m_loopbkport = d->m_client->createPort();
- d->m_loopbkport->setPortName("loopback");
- d->m_loopbkport->setCapability( SND_SEQ_PORT_CAP_WRITE |
- SND_SEQ_PORT_CAP_NO_EXPORT );
- d->m_loopbkport->setPortType( SND_SEQ_PORT_TYPE_SPECIFIC );
+ return 0;
}
- return d->m_loopbkport;
- }
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic