diff -ru cvs/apps/wps-display.c build/apps/wps-display.c --- cvs/apps/wps-display.c Tue Oct 8 22:31:42 2002 +++ build/apps/wps-display.c Wed Oct 9 04:51:35 2002 @@ -69,6 +69,7 @@ static int ff_rewind_count; bool wps_time_countup = true; static bool wps_loaded = false; +static bool pb_used = false; /* Set format string to use for WPS, splitting it into lines */ static void wps_format(char* fmt) @@ -144,6 +145,8 @@ sleep(HZ); } + pb_used = false; + return numread > 0; } @@ -306,6 +309,7 @@ case 'b': /* progress bar */ flags->player_progress = true; flags->dynamic = true; + pb_used = true; return "\x01"; case 'p': /* Playlist Position */ @@ -585,11 +589,31 @@ visible. If so we neither want do draw nor enable the peak meter. */ if (peak_meter_y + h <= LCD_HEIGHT) { - /* found a line with a peak meter -> remember that we must - enable it later */ - enable_pm = true; - peak_meter_draw(0, peak_meter_y, LCD_WIDTH, - MIN(h, LCD_HEIGHT - peak_meter_y)); + /* display the progress meter when performing ff/rw */ + if (!pb_used && ff_rewind_count != 0) { +#ifdef HAVE_LCD_CHARCELLS +#ifndef SIMULATOR + draw_player_progress(id3, ff_rewind_count); +#endif +#else + int w,h; + int offset = global_settings.statusbar ? + STATUSBAR_HEIGHT : 0; + lcd_getstringsize("M",&w,&h); + lcd_clearrect(0, peak_meter_y, LCD_WIDTH, + MIN(h, LCD_HEIGHT - peak_meter_y)); + slidebar(0, i*h + offset + 1, LCD_WIDTH, 6, + (id3->elapsed + ff_rewind_count) * 100 / + id3->length, + Grow_Right); +#endif + } else { + /* found a line with a peak meter -> remember that + we must enable it later */ + enable_pm = true; + peak_meter_draw(0, peak_meter_y, LCD_WIDTH, + MIN(h, LCD_HEIGHT - peak_meter_y)); + } } continue; }