btr: Rename btr_bytes_pending() and make it public.
[paraslash.git] / vss.c
diff --git a/vss.c b/vss.c
index 0b6735b..1a038f0 100644 (file)
--- a/vss.c
+++ b/vss.c
@@ -636,7 +636,7 @@ static void vss_eof(struct vss_task *vsst)
        para_munmap(vsst->map, mmd->size);
        vsst->map = NULL;
        mmd->chunks_sent = 0;
-       mmd->offset = 0;
+       //mmd->offset = 0;
        mmd->afd.afhi.seconds_total = 0;
        mmd->afd.afhi.chunk_tv.tv_sec = 0;
        mmd->afd.afhi.chunk_tv.tv_usec = 0;
@@ -677,6 +677,13 @@ static int need_to_request_new_audio_file(struct vss_task *vsst)
        return 1;
 }
 
+static void set_mmd_offset(void)
+{
+       struct timeval offset;
+       tv_scale(mmd->current_chunk, &mmd->afd.afhi.chunk_tv, &offset);
+       mmd->offset = tv2ms(&offset);
+}
+
 /**
  * Compute the timeout for the main select-loop of the scheduler.
  *
@@ -721,6 +728,7 @@ static void vss_pre_select(struct sched *s, struct task *t)
                mmd->chunks_sent = 0;
                mmd->current_chunk = mmd->repos_request;
                mmd->new_vss_status_flags &= ~VSS_REPOS;
+               set_mmd_offset();
        }
        if (need_to_request_new_audio_file(vsst)) {
                PARA_DEBUG_LOG("ready and playing, but no audio file\n");
@@ -875,11 +883,9 @@ static void vss_send(struct vss_task *vsst)
                size_t len;
 
                if (!mmd->chunks_sent) {
-                       struct timeval tmp;
                        mmd->stream_start = *now;
-                       tv_scale(mmd->current_chunk, &mmd->afd.afhi.chunk_tv, &tmp);
-                       mmd->offset = tv2ms(&tmp);
                        mmd->events++;
+                       set_mmd_offset();
                }
                /*
                 * We call the send function also in case of empty chunks as