summaryrefslogtreecommitdiff
path: root/src/audio
diff options
context:
space:
mode:
authorJaakko Keränen <jaakko.keranen@iki.fi>2020-10-16 19:04:14 +0300
committerJaakko Keränen <jaakko.keranen@iki.fi>2020-10-16 19:04:14 +0300
commit3d723de1022d2fdeccb9bae6f934e6936445ef21 (patch)
tree54ff4c5512b0c80b74279a44ad5a552315434c68 /src/audio
parentabf2be6771d55063044df8efe8bb5c02183c1f7d (diff)
Player: Hide volume slider after 3 sec idle time
Diffstat (limited to 'src/audio')
-rw-r--r--src/audio/player.c14
-rw-r--r--src/audio/player.h2
2 files changed, 16 insertions, 0 deletions
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. */
29#include <the_Foundation/buffer.h> 29#include <the_Foundation/buffer.h>
30#include <the_Foundation/thread.h> 30#include <the_Foundation/thread.h>
31#include <SDL_audio.h> 31#include <SDL_audio.h>
32#include <SDL_timer.h>
32 33
33#if defined (LAGRANGE_ENABLE_MPG123) 34#if defined (LAGRANGE_ENABLE_MPG123)
34# include <mpg123.h> 35# include <mpg123.h>
@@ -443,6 +444,7 @@ struct Impl_Player {
443 float volume; 444 float volume;
444 int flags; 445 int flags;
445 iInputBuf * data; 446 iInputBuf * data;
447 uint32_t lastInteraction;
446 iDecoder * decoder; 448 iDecoder * decoder;
447}; 449};
448 450
@@ -695,12 +697,14 @@ iBool start_Player(iPlayer *d) {
695 d->decoder = new_Decoder(d->data, &content); 697 d->decoder = new_Decoder(d->data, &content);
696 d->decoder->gain = d->volume; 698 d->decoder->gain = d->volume;
697 SDL_PauseAudioDevice(d->device, SDL_FALSE); 699 SDL_PauseAudioDevice(d->device, SDL_FALSE);
700 setNotIdle_Player(d);
698 return iTrue; 701 return iTrue;
699} 702}
700 703
701void setPaused_Player(iPlayer *d, iBool isPaused) { 704void setPaused_Player(iPlayer *d, iBool isPaused) {
702 if (isStarted_Player(d)) { 705 if (isStarted_Player(d)) {
703 SDL_PauseAudioDevice(d->device, isPaused ? SDL_TRUE : SDL_FALSE); 706 SDL_PauseAudioDevice(d->device, isPaused ? SDL_TRUE : SDL_FALSE);
707 setNotIdle_Player(d);
704 } 708 }
705} 709}
706 710
@@ -720,10 +724,16 @@ void setVolume_Player(iPlayer *d, float volume) {
720 if (d->decoder) { 724 if (d->decoder) {
721 d->decoder->gain = d->volume; 725 d->decoder->gain = d->volume;
722 } 726 }
727 setNotIdle_Player(d);
723} 728}
724 729
725void setFlags_Player(iPlayer *d, int flags, iBool set) { 730void setFlags_Player(iPlayer *d, int flags, iBool set) {
726 iChangeFlags(d->flags, flags, set); 731 iChangeFlags(d->flags, flags, set);
732 setNotIdle_Player(d);
733}
734
735void setNotIdle_Player(iPlayer *d) {
736 d->lastInteraction = SDL_GetTicks();
727} 737}
728 738
729int flags_Player(const iPlayer *d) { 739int flags_Player(const iPlayer *d) {
@@ -760,6 +770,10 @@ float streamProgress_Player(const iPlayer *d) {
760 return 0; 770 return 0;
761} 771}
762 772
773uint32_t idleTimeMs_Player(const iPlayer *d) {
774 return SDL_GetTicks() - d->lastInteraction;
775}
776
763iString *metadataLabel_Player(const iPlayer *d) { 777iString *metadataLabel_Player(const iPlayer *d) {
764 iString *meta = new_String(); 778 iString *meta = new_String();
765 if (d->decoder) { 779 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 *);
54void setPaused_Player (iPlayer *, iBool isPaused); 54void setPaused_Player (iPlayer *, iBool isPaused);
55void setVolume_Player (iPlayer *, float volume); 55void setVolume_Player (iPlayer *, float volume);
56void setFlags_Player (iPlayer *, int flags, iBool set); 56void setFlags_Player (iPlayer *, int flags, iBool set);
57void setNotIdle_Player (iPlayer *);
57 58
58int flags_Player (const iPlayer *); 59int flags_Player (const iPlayer *);
59const iString *tag_Player (const iPlayer *, enum iPlayerTag tag); 60const iString *tag_Player (const iPlayer *, enum iPlayerTag tag);
@@ -64,4 +65,5 @@ float time_Player (const iPlayer *);
64float duration_Player (const iPlayer *); 65float duration_Player (const iPlayer *);
65float streamProgress_Player (const iPlayer *); /* normalized 0...1 */ 66float streamProgress_Player (const iPlayer *); /* normalized 0...1 */
66 67
68uint32_t idleTimeMs_Player (const iPlayer *);
67iString * metadataLabel_Player (const iPlayer *); 69iString * metadataLabel_Player (const iPlayer *);