mirror of https://github.com/mpv-player/mpv
cache: reduce message spam
Output only 1 message every 5 seconds at most.
This commit is contained in:
parent
788241649d
commit
68f46675bc
|
@ -33,6 +33,9 @@
|
||||||
// the cache is active.
|
// the cache is active.
|
||||||
#define CACHE_UPDATE_CONTROLS_TIME 2.0
|
#define CACHE_UPDATE_CONTROLS_TIME 2.0
|
||||||
|
|
||||||
|
// Time in seconds the cache prints a new message at all.
|
||||||
|
#define CACHE_NO_SPAM 5.0
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -77,6 +80,7 @@ struct priv {
|
||||||
|
|
||||||
// Owned by the main thread
|
// Owned by the main thread
|
||||||
stream_t *cache; // wrapper stream, used by demuxer etc.
|
stream_t *cache; // wrapper stream, used by demuxer etc.
|
||||||
|
double last_warn_time;
|
||||||
|
|
||||||
// Owned by the cache thread
|
// Owned by the cache thread
|
||||||
stream_t *stream; // "real" stream, used to read from the source media
|
stream_t *stream; // "real" stream, used to read from the source media
|
||||||
|
@ -142,14 +146,18 @@ static int cache_wakeup_and_wait(struct priv *s, double *retry_time)
|
||||||
if (stream_check_interrupt(0))
|
if (stream_check_interrupt(0))
|
||||||
return CACHE_INTERRUPTED;
|
return CACHE_INTERRUPTED;
|
||||||
|
|
||||||
|
double start = mp_time_sec();
|
||||||
|
|
||||||
|
if (!s->last_warn_time || start - s->last_warn_time >= CACHE_NO_SPAM) {
|
||||||
// Print a "more severe" warning after waiting 1 second and no new data
|
// Print a "more severe" warning after waiting 1 second and no new data
|
||||||
if ((*retry_time) >= 1.0) {
|
if ((*retry_time) >= 1.0) {
|
||||||
MP_ERR(s, "Cache keeps not responding.\n");
|
MP_ERR(s, "Cache keeps not responding.\n");
|
||||||
|
s->last_warn_time = start;
|
||||||
} else if (*retry_time > 0.1) {
|
} else if (*retry_time > 0.1) {
|
||||||
MP_WARN(s, "Cache is not responding - slow/stuck network connection?\n");
|
MP_WARN(s, "Cache is not responding - slow/stuck network connection?\n");
|
||||||
|
s->last_warn_time = start;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double start = mp_time_sec();
|
|
||||||
|
|
||||||
pthread_cond_signal(&s->wakeup);
|
pthread_cond_signal(&s->wakeup);
|
||||||
mpthread_cond_timed_wait(&s->wakeup, &s->mutex, CACHE_WAIT_TIME);
|
mpthread_cond_timed_wait(&s->wakeup, &s->mutex, CACHE_WAIT_TIME);
|
||||||
|
@ -261,6 +269,7 @@ static bool cache_fill(struct priv *s)
|
||||||
// The read call might take a long time and block, so drop the lock.
|
// The read call might take a long time and block, so drop the lock.
|
||||||
pthread_mutex_unlock(&s->mutex);
|
pthread_mutex_unlock(&s->mutex);
|
||||||
len = stream_read_partial(s->stream, &s->buffer[pos], space);
|
len = stream_read_partial(s->stream, &s->buffer[pos], space);
|
||||||
|
mp_sleep_us(100000);
|
||||||
pthread_mutex_lock(&s->mutex);
|
pthread_mutex_lock(&s->mutex);
|
||||||
|
|
||||||
double pts;
|
double pts;
|
||||||
|
|
Loading…
Reference in New Issue