瀏覽代碼

aplay: Fixed incomplete playback of files

aplay used to quit as soon as the last enqueue of new buffer data
was sucessful. Because the connection closes as soon as the
application quits, samples were still in the buffer of the
ASBufferQueue as playback was halted.
Till Mayer 5 年之前
父節點
當前提交
02e787f8a4
共有 1 個文件被更改,包括 9 次插入5 次删除
  1. 9 5
      Userland/aplay.cpp

+ 9 - 5
Userland/aplay.cpp

@@ -24,12 +24,16 @@ int main(int argc, char** argv)
     printf("\033[34;1mProgress\033[0m: \033[s");
     printf("\033[34;1mProgress\033[0m: \033[s");
     for (;;) {
     for (;;) {
         auto samples = loader.get_more_samples();
         auto samples = loader.get_more_samples();
-        if (!samples)
+        if (samples) {
+            printf("\033[u");
+            printf("%d/%d", loader.loaded_samples(), loader.total_samples());
+            fflush(stdout);
+            audio_client->enqueue(*samples);
+        } else if (audio_client->get_remaining_samples()) {
+            sleep(1);
+        } else {
             break;
             break;
-        printf("\033[u");
-        printf("%d/%d", loader.loaded_samples(), loader.total_samples());
-        fflush(stdout);
-        audio_client->enqueue(*samples);
+        }
     }
     }
     printf("\n");
     printf("\n");
     return 0;
     return 0;