diff options
author | wm4 <wm4@nowhere> | 2014-07-31 04:19:41 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-07-31 04:19:41 +0200 |
commit | b4f24544bbfdd2bec765db08f5d745fadeb4d111 (patch) | |
tree | ba6aa91bdd52a0e8309af331c75a896fee23c7d1 /player/playloop.c | |
parent | aaa90e1a337dac7f1ef0e8e289d50950a67c90a1 (diff) | |
download | mpv-b4f24544bbfdd2bec765db08f5d745fadeb4d111.tar.bz2 mpv-b4f24544bbfdd2bec765db08f5d745fadeb4d111.tar.xz |
client API: make "cache" property and similar observable
Achieve this by polling. Will be used by the OSC. Basically a bad hack -
but the point is that the mpv core itself is in the best position to
improve this later.
Diffstat (limited to 'player/playloop.c')
-rw-r--r-- | player/playloop.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/player/playloop.c b/player/playloop.c index 90d46cc178..b1d3efeecf 100644 --- a/player/playloop.c +++ b/player/playloop.c @@ -541,6 +541,18 @@ static void handle_pause_on_low_cache(struct MPContext *mpctx) opts->pause = prev_paused_user; } } + // Also update cache properties. + if (cache_kb > 0 || mpctx->next_cache_update > 0) { + double now = mp_time_sec(); + if (mpctx->next_cache_update <= now) { + mpctx->next_cache_update = cache_kb > 0 ? now + 0.25 : 0; + mp_notify(mpctx, MP_EVENT_CACHE_UPDATE, NULL); + } + if (mpctx->next_cache_update > 0) { + mpctx->sleeptime = + MPMIN(mpctx->sleeptime, mpctx->next_cache_update - now); + } + } } static void handle_heartbeat_cmd(struct MPContext *mpctx) |