commit 5340acef85c8a1e25c54365b0021435aac5f3491
parent 5392de0a2979968c217d79c0eaec84e0a690803c
Author: fundamental <mark.d.mccurry@gmail.com>
Date: Wed, 16 Dec 2009 12:02:37 -0500
ALSA: fixed reinitialization of superclasses data
Diffstat:
3 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/src/Misc/Atomic.cpp b/src/Misc/Atomic.cpp
@@ -51,7 +51,8 @@ T Atomic<T>::operator()() const
}
template<class T>
-T Atomic<T>::operator++(){
+T Atomic<T>::operator++()
+{
T tmp;
pthread_mutex_lock(&mutex);
tmp = ++value;
diff --git a/src/Nio/AlsaEngine.cpp b/src/Nio/AlsaEngine.cpp
@@ -43,10 +43,6 @@ AlsaEngine::AlsaEngine(OutMgr *out)
// midi.pThread = 0;
threadStop = true;
- pthread_mutex_init(&outBuf_mutex, NULL);
- pthread_cond_init (&outBuf_cv, NULL);
- manager = sysOut;
-
}
//bool AlsaEngine::openMidi()
@@ -196,6 +192,8 @@ bool AlsaEngine::xrunRecover()
bool AlsaEngine::Start()
{
+ if(enabled())
+ return;
OpenStuff();
int chk;
pthread_attr_t attr;
@@ -226,6 +224,8 @@ bail_out:
void AlsaEngine::Stop()
{
+ if(!enabled())
+ return;
threadStop = true;
enabled = false;
@@ -355,7 +355,7 @@ void AlsaEngine::OpenStuff()
{
/* Open PCM device for playback. */
handle=NULL;
- rc = snd_pcm_open(&handle, "default",
+ rc = snd_pcm_open(&handle, "hw:0",
SND_PCM_STREAM_PLAYBACK, 0);
if (rc < 0) {
fprintf(stderr,
@@ -425,7 +425,7 @@ void AlsaEngine::RunStuff()
}
else if (rc < 0)
cerr << "error from writei: " << snd_strerror(rc) << endl;
- else if (rc != (int)frames)
- cerr << "short write, write " << rc << "frames" << endl;
+ //else if (rc != (int)frames)
+ // cerr << "short write, write " << rc << "frames" << endl;
}
}
diff --git a/src/Nio/AudioOut.cpp b/src/Nio/AudioOut.cpp
@@ -48,9 +48,10 @@ const Stereo<Sample> AudioOut::getNext()
pthread_mutex_lock(&outBuf_mutex);
bool isEmpty = outBuf.empty();
pthread_mutex_unlock(&outBuf_mutex);
+
if(isEmpty)//fetch samples if possible
{
- if(manager->getRunning()<BUFF_SIZE)
+ if(manager->getRunning() < BUFF_SIZE)
manager->requestSamples(BUFF_SIZE-manager->getRunning());
if(true)
cout << "-----------------Starvation------------------"<< endl;