ALSA-backend separate report for error and x-run
authorRobin Gareus <robin@gareus.org>
Wed, 28 Jan 2015 12:19:03 +0000 (13:19 +0100)
committerRobin Gareus <robin@gareus.org>
Wed, 28 Jan 2015 12:47:24 +0000 (13:47 +0100)
libs/backends/alsa/alsa_audiobackend.cc

index dcf719e25149a88c95c71bc132d9c2c2661f6e0c..ade04b5c302c3ba098a25c81000138305c97a7ab 100644 (file)
@@ -1420,10 +1420,18 @@ AlsaAudioBackend::main_process_thread ()
                                ++no_proc_errors;
                                xrun = true;
                        }
-                       if (_pcmi->state () < 0 || no_proc_errors > bailout) {
+                       if (_pcmi->state () < 0) {
                                PBD::error << _("AlsaAudioBackend: I/O error. Audio Process Terminated.") << endmsg;
                                break;
                        }
+                       if (no_proc_errors > bailout) {
+                               PBD::error
+                                       << string_compose (
+                                                       _("AlsaAudioBackend: Audio Process Terminated after %1 consecutive x-runs."),
+                                                       no_proc_errors)
+                                       << endmsg;
+                               break;
+                       }
 
                        while (nr >= (long)_samples_per_period && _freewheeling == _freewheel) {
                                uint32_t i = 0;
@@ -1501,7 +1509,7 @@ AlsaAudioBackend::main_process_thread ()
                        if (xrun && (_pcmi->capt_xrun() > 0 || _pcmi->play_xrun() > 0)) {
                                engine.Xrun ();
 #if 0
-                               fprintf(stderr, "ALSA x-run read: %.1f ms, write: %.1f ms\n",
+                               fprintf(stderr, "ALSA x-run read: %.2f ms, write: %.2f ms\n",
                                                _pcmi->capt_xrun() * 1000.0, _pcmi->play_xrun() * 1000.0);
 #endif
                        }