diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2011-02-20 11:33:25 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2011-02-20 11:33:25 +0000 |
commit | 03862292a2c619951053c58844e0346dbe1bbe5c (patch) | |
tree | 6966d7f65ddc56b8d836df92acadac6c1d926ed8 | |
parent | 9d2c7b8b672ce14c2e8cf52dc778ba8851ef07bf (diff) | |
download | rockbox-03862292a2c619951053c58844e0346dbe1bbe5c.tar.gz rockbox-03862292a2c619951053c58844e0346dbe1bbe5c.zip |
Make format_time properly format negative times because sometimes they are shown if track length estimates are off from seeking. Example: -0:15 instead of 0:-15. -1000ms < t < 0 is shown as -0:00.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29343 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/misc.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/misc.c b/apps/misc.c index e0496633e4..5b560dee16 100644 --- a/apps/misc.c +++ b/apps/misc.c | |||
@@ -894,16 +894,20 @@ char* skip_whitespace(char* const str) | |||
894 | */ | 894 | */ |
895 | void format_time(char* buf, int buf_size, long t) | 895 | void format_time(char* buf, int buf_size, long t) |
896 | { | 896 | { |
897 | if ( t < 3600000 ) | 897 | int const time = ABS(t / 1000); |
898 | int const hours = time / 3600; | ||
899 | int const minutes = time / 60 - hours * 60; | ||
900 | int const seconds = time % 60; | ||
901 | const char * const sign = &"-"[t < 0 ? 0 : 1]; | ||
902 | |||
903 | if ( hours == 0 ) | ||
898 | { | 904 | { |
899 | snprintf(buf, buf_size, "%d:%02d", | 905 | snprintf(buf, buf_size, "%s%d:%02d", sign, minutes, seconds); |
900 | (int) (t / 60000), (int) (t % 60000 / 1000)); | ||
901 | } | 906 | } |
902 | else | 907 | else |
903 | { | 908 | { |
904 | snprintf(buf, buf_size, "%d:%02d:%02d", | 909 | snprintf(buf, buf_size, "%s%d:%02d:%02d", sign, hours, minutes, |
905 | (int) (t / 3600000), (int) (t % 3600000 / 60000), | 910 | seconds); |
906 | (int) (t % 60000 / 1000)); | ||
907 | } | 911 | } |
908 | } | 912 | } |
909 | 913 | ||