summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.c1
-rw-r--r--palsa.c4
-rw-r--r--streamer.c14
-rw-r--r--streamer.h5
4 files changed, 21 insertions, 3 deletions
diff --git a/main.c b/main.c
index a2af6e04..8e276430 100644
--- a/main.c
+++ b/main.c
@@ -350,6 +350,7 @@ player_thread (uintptr_t ctx) {
gtkpl_add_files (&main_playlist, (GSList *)ctx);
break;
case M_OPENFILES:
+ p_stop ();
gtkpl_add_files (&main_playlist, (GSList *)ctx);
gtkpl_playsong (&main_playlist);
break;
diff --git a/palsa.c b/palsa.c
index 09550065..b1229e0d 100644
--- a/palsa.c
+++ b/palsa.c
@@ -342,6 +342,10 @@ palsa_thread (uintptr_t context) {
static void
palsa_callback (char *stream, int len) {
+ if (streamer_get_fill () < len) {
+ memset (stream, 0, len);
+ return;
+ }
int bytesread = streamer_read (stream, len);
int ivolume = volume * 1000;
for (int i = 0; i < bytesread/2; i++) {
diff --git a/streamer.c b/streamer.c
index 00b454ba..9d03aa2c 100644
--- a/streamer.c
+++ b/streamer.c
@@ -342,6 +342,16 @@ streamer_read (char *bytes, int size) {
}
int
-streamer_get_fill_level (void) {
- return streambuffer_fill / (STREAM_BUFFER_SIZE / 100);
+streamer_get_fill (void) {
+ return streambuffer_fill;
+}
+
+int
+streamer_is_buffering (void) {
+ if (streambuffer_fill < 16384) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
}
diff --git a/streamer.h b/streamer.h
index ef486c08..9a3fbc1c 100644
--- a/streamer.h
+++ b/streamer.h
@@ -47,9 +47,12 @@ void
streamer_set_seek (float pos);
int
-streamer_get_fill_level (void);
+streamer_get_fill (void);
float
streamer_get_playpos (void);
+int
+streamer_is_buffering (void);
+
#endif // __STREAMER_H