summaryrefslogtreecommitdiff
path: root/apps/gui/gwps.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/gwps.c')
-rw-r--r--apps/gui/gwps.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/apps/gui/gwps.c b/apps/gui/gwps.c
index 7ba9862895..d928bc3e64 100644
--- a/apps/gui/gwps.c
+++ b/apps/gui/gwps.c
@@ -63,6 +63,7 @@
63#include "pitchscreen.h" 63#include "pitchscreen.h"
64#include "appevents.h" 64#include "appevents.h"
65#include "viewport.h" 65#include "viewport.h"
66#include "pcmbuf.h"
66 67
67/* currently only one wps_state is needed */ 68/* currently only one wps_state is needed */
68struct wps_state wps_state; 69struct wps_state wps_state;
@@ -115,6 +116,37 @@ static void next_track(void)
115 116
116 audio_next(); 117 audio_next();
117} 118}
119
120static void play_hop(int direction)
121{
122 unsigned step = ((unsigned)global_settings.skip_length*1000);
123 unsigned long *elapsed = &(wps_state.id3->elapsed);
124
125 if (direction == 1 && wps_state.id3->length - *elapsed < step+1000) {
126#if CONFIG_CODEC == SWCODEC
127 if(global_settings.beep)
128 pcmbuf_beep(1000, 150, 1500*global_settings.beep);
129#endif
130 return;
131 } else if ((direction == -1 && *elapsed < step)) {
132 *elapsed = 0;
133 } else {
134 *elapsed += step * direction;
135 }
136 if((audio_status() & AUDIO_STATUS_PLAY) && !wps_state.paused) {
137#if (CONFIG_CODEC == SWCODEC)
138 audio_pre_ff_rewind();
139#else
140 audio_pause();
141#endif
142 }
143 audio_ff_rewind(*elapsed);
144#if (CONFIG_CODEC != SWCODEC)
145 if (!wps_state.paused)
146 audio_resume();
147#endif
148}
149
118static int fix_wps_bars(void) 150static int fix_wps_bars(void)
119{ 151{
120#ifdef HAVE_LCD_BITMAP 152#ifdef HAVE_LCD_BITMAP