[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdemultimedia/akode/plugins/alsa_sink
From:       Allan Sandfeld Jensen <kde () carewolf ! com>
Date:       2005-01-07 23:37:18
Message-ID: 20050107233718.F3A0D1939B () office ! kde ! org
[Download RAW message or body]

CVS commit by carewolf: 

Completly close and reopen pcm-channels when changing configuration


  M +8 -2      alsa_sink.cpp   1.10


--- kdemultimedia/akode/plugins/alsa_sink/alsa_sink.cpp  #1.9:1.10
@@ -74,5 +74,5 @@ void ALSASink::close()
 {
     if (m_data->pcm_playback) {
-        snd_pcm_drop(m_data->pcm_playback);
+        snd_pcm_drain(m_data->pcm_playback);
         snd_pcm_close(m_data->pcm_playback);
     }
@@ -86,4 +86,11 @@ int ALSASink::setAudioConfiguration(cons
     if (m_data->error) return -1;
     
+    // Get back to OPEN state (is SETUP state enough with snd_pcm_drop?)
+    snd_pcm_state_t state = snd_pcm_state( m_data->pcm_playback );
+    if (state != SND_PCM_STATE_OPEN) {
+        close();
+        if (!open()) return -1;
+    }
+    
     int res = 0;
     m_data->config = *config;
@@ -151,5 +158,4 @@ int ALSASink::setAudioConfiguration(cons
     m_data->buffer = new char[m_data->fragmentSize];
     m_data->filled = 0;
-    m_data->open = false;
 
     if (snd_pcm_hw_params(m_data->pcm_playback, hw) < 0) {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic