Mercurial > hg > xmms-sid
changeset 132:4162a5370b9e
Added "seek"-subsong control option, in style of xmms-sidplay.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 16 Jan 2004 02:53:02 +0000 |
parents | 0d5d0126cce6 |
children | 79a526595d16 |
files | src/xmms-sid.c src/xmms-sid.h src/xs_config.c src/xs_config.h src/xs_stil.c |
diffstat | 5 files changed, 29 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xmms-sid.c Fri Jan 16 02:52:00 2004 +0000 +++ b/src/xmms-sid.c Fri Jan 16 02:53:02 2004 +0000 @@ -466,19 +466,24 @@ */ void xs_seek(gint iTime) { - gint n; + /* Check status */ if (!xs_status.pTune || !xs_status.isPlaying) return; - + + /* Act according to settings */ switch (xs_cfg.subsongControl) { - case XS_SSC_POPUP: + case XS_SSC_SEEK: pthread_mutex_lock(&xs_mutex); - - n = xs_status.pTune->subTunes[xs_status.currSong].tuneLength; - if ((iTime > 0) && (iTime <= n)) + if (iTime < xs_status.lastTime) { - xs_status.currSong = 1 + ((iTime * xs_status.pTune->nsubTunes) / n); + if (xs_status.currSong > 1) + xs_status.currSong--; + } else + if (iTime > xs_status.lastTime) + { + if (xs_status.currSong < xs_status.pTune->nsubTunes) + xs_status.currSong++; } - + pthread_mutex_unlock(&xs_mutex); break; @@ -518,15 +523,20 @@ return -1; /* Let's see what we do */ + switch (xs_cfg.subsongControl) { + case XS_SSC_SEEK: + xs_status.lastTime = xs_plugin_ip.output->output_time() / 1000; + break; + #ifdef HAVE_SONG_POSITION - if (xs_cfg.subsongControl == XS_SSC_PATCH) - { + case XS_SSC_PATCH: pthread_mutex_lock(&xs_mutex); set_song_position(xs_status.currSong, 1, xs_status.pTune->nsubTunes); pthread_mutex_unlock(&xs_mutex); - } + break; #endif - + } + /* Else, return output time reported by audio output plugin */ return xs_plugin_ip.output->output_time(); }
--- a/src/xmms-sid.h Fri Jan 16 02:52:00 2004 +0000 +++ b/src/xmms-sid.h Fri Jan 16 02:53:02 2004 +0000 @@ -84,7 +84,8 @@ audioBitsPerSample; void *player; gboolean isError, isPlaying; - gint currSong; + gint currSong, + lastTime; t_xs_tune *pTune; } t_xs_status;
--- a/src/xs_config.c Fri Jan 16 02:52:00 2004 +0000 +++ b/src/xs_config.c Fri Jan 16 02:53:02 2004 +0000 @@ -128,6 +128,7 @@ { WTYPE_TEXT, CTYPE_STR, "cfg_hvsc_path", &xs_cfg.hvscPath, 0 }, { WTYPE_BGROUP, CTYPE_INT, "cfg_subsong_none", &xs_cfg.subsongControl, XS_SSC_NONE }, +{ WTYPE_BGROUP, CTYPE_INT, "cfg_subsong_seek", &xs_cfg.subsongControl, XS_SSC_SEEK }, { WTYPE_BGROUP, CTYPE_INT, "cfg_subsong_popup", &xs_cfg.subsongControl, XS_SSC_POPUP }, { WTYPE_BGROUP, CTYPE_INT, "cfg_subsong_patch", &xs_cfg.subsongControl, XS_SSC_PATCH },
--- a/src/xs_config.h Fri Jan 16 02:52:00 2004 +0000 +++ b/src/xs_config.h Fri Jan 16 02:53:02 2004 +0000 @@ -57,7 +57,8 @@ enum XS_SSC { XS_SSC_NONE = 1, XS_SSC_POPUP, - XS_SSC_PATCH + XS_SSC_PATCH, + XS_SSC_SEEK }; @@ -111,7 +112,7 @@ /* - * Configuration-file + * Configuration-file */ enum { CTYPE_INT = 1,