summaryrefslogtreecommitdiff
path: root/src/audio/player.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/player.c')
-rw-r--r--src/audio/player.c14
1 files changed, 14 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) {