From 3d723de1022d2fdeccb9bae6f934e6936445ef21 Mon Sep 17 00:00:00 2001 From: Jaakko Keränen Date: Fri, 16 Oct 2020 19:04:14 +0300 Subject: Player: Hide volume slider after 3 sec idle time --- src/audio/player.c | 14 ++++++++++++++ src/audio/player.h | 2 ++ 2 files changed, 16 insertions(+) (limited to 'src/audio') diff --git a/src/audio/player.c b/src/audio/player.c index e0003168..77c23104 100644 --- a/src/audio/player.c +++ b/src/audio/player.c @@ -29,6 +29,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include +#include #if defined (LAGRANGE_ENABLE_MPG123) # include @@ -443,6 +444,7 @@ struct Impl_Player { float volume; int flags; iInputBuf * data; + uint32_t lastInteraction; iDecoder * decoder; }; @@ -695,12 +697,14 @@ iBool start_Player(iPlayer *d) { d->decoder = new_Decoder(d->data, &content); d->decoder->gain = d->volume; SDL_PauseAudioDevice(d->device, SDL_FALSE); + setNotIdle_Player(d); return iTrue; } void setPaused_Player(iPlayer *d, iBool isPaused) { if (isStarted_Player(d)) { SDL_PauseAudioDevice(d->device, isPaused ? SDL_TRUE : SDL_FALSE); + setNotIdle_Player(d); } } @@ -720,10 +724,16 @@ void setVolume_Player(iPlayer *d, float volume) { if (d->decoder) { d->decoder->gain = d->volume; } + setNotIdle_Player(d); } void setFlags_Player(iPlayer *d, int flags, iBool set) { iChangeFlags(d->flags, flags, set); + setNotIdle_Player(d); +} + +void setNotIdle_Player(iPlayer *d) { + d->lastInteraction = SDL_GetTicks(); } int flags_Player(const iPlayer *d) { @@ -760,6 +770,10 @@ float streamProgress_Player(const iPlayer *d) { return 0; } +uint32_t idleTimeMs_Player(const iPlayer *d) { + return SDL_GetTicks() - d->lastInteraction; +} + iString *metadataLabel_Player(const iPlayer *d) { iString *meta = new_String(); if (d->decoder) { diff --git a/src/audio/player.h b/src/audio/player.h index 58947ef4..82d95fd2 100644 --- a/src/audio/player.h +++ b/src/audio/player.h @@ -54,6 +54,7 @@ void stop_Player (iPlayer *); void setPaused_Player (iPlayer *, iBool isPaused); void setVolume_Player (iPlayer *, float volume); void setFlags_Player (iPlayer *, int flags, iBool set); +void setNotIdle_Player (iPlayer *); int flags_Player (const iPlayer *); const iString *tag_Player (const iPlayer *, enum iPlayerTag tag); @@ -64,4 +65,5 @@ float time_Player (const iPlayer *); float duration_Player (const iPlayer *); float streamProgress_Player (const iPlayer *); /* normalized 0...1 */ +uint32_t idleTimeMs_Player (const iPlayer *); iString * metadataLabel_Player (const iPlayer *); -- cgit v1.2.3