diff options
Diffstat (limited to 'apps/gui/gwps.c')
-rw-r--r-- | apps/gui/gwps.c | 32 |
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 */ |
68 | struct wps_state wps_state; | 69 | struct wps_state wps_state; |
@@ -115,6 +116,37 @@ static void next_track(void) | |||
115 | 116 | ||
116 | audio_next(); | 117 | audio_next(); |
117 | } | 118 | } |
119 | |||
120 | static 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 | |||
118 | static int fix_wps_bars(void) | 150 | static int fix_wps_bars(void) |
119 | { | 151 | { |
120 | #ifdef HAVE_LCD_BITMAP | 152 | #ifdef HAVE_LCD_BITMAP |