From 07fd5d9534501ff594bc8cc6b260a41e790a7154 Mon Sep 17 00:00:00 2001 From: Miika Pekkarinen Date: Thu, 15 Dec 2005 18:44:59 +0000 Subject: [PATCH] Fixed a division by zero problem with simulator when crossfade is disabled. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8245 a1c6a512-1295-4272-9138-f99709370657 --- apps/pcmbuf.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c index 474d09ee5f..4277dca379 100644 --- a/apps/pcmbuf.c +++ b/apps/pcmbuf.c @@ -442,7 +442,9 @@ static void crossfade_start(void) break ; case CFM_FLUSH: - crossfade_rem = bytesleft /2; + crossfade_rem = (bytesleft - CHUNK_SIZE) /2; + crossfade_fade_in_rem = 0; + crossfade_fade_in_amount = 0; break ; } @@ -537,9 +539,12 @@ int crossfade(short *buf, const short *buf2, int length) crossfade_rem -= size; if (crossfade_rem <= 0) { - size_insert = MAX(0, MIN(crossfade_fade_in_rem, length - size)); - fade_insert(&buf2[size], size_insert*2); - crossfade_fade_in_rem -= size_insert; + if (crossfade_fade_in_rem > 0 && crossfade_fade_in_amount > 0) + { + size_insert = MAX(0, MIN(crossfade_fade_in_rem, length - size)); + fade_insert(&buf2[size], size_insert*2); + crossfade_fade_in_rem -= size_insert; + } if (crossfade_fade_in_rem <= 0) crossfade_active = false;