Chris Robinson : winemp3: Don't keep unused data buffered.
Alexandre Julliard
julliard at winehq.org
Thu Feb 21 07:42:22 CST 2008
Module: wine
Branch: master
Commit: 8f46a5119249562aceabff6d120948cbfacb6423
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8f46a5119249562aceabff6d120948cbfacb6423
Author: Chris Robinson <chris.kcat at gmail.com>
Date: Wed Feb 20 05:14:07 2008 -0800
winemp3: Don't keep unused data buffered.
---
dlls/winemp3.acm/interface.c | 5 ++++-
dlls/winemp3.acm/mpegl3.c | 7 +++++--
dlls/winemp3.acm/mpglib.h | 2 +-
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/dlls/winemp3.acm/interface.c b/dlls/winemp3.acm/interface.c
index 336a4f8..6ed8562 100644
--- a/dlls/winemp3.acm/interface.c
+++ b/dlls/winemp3.acm/interface.c
@@ -48,7 +48,7 @@ BOOL InitMP3(struct mpstr *mp)
return !0;
}
-void ExitMP3(struct mpstr *mp)
+void ClearMP3Buffer(struct mpstr *mp)
{
struct buf *b,*bn;
@@ -59,6 +59,9 @@ void ExitMP3(struct mpstr *mp)
free(b);
b = bn;
}
+ mp->tail = NULL;
+ mp->head = NULL;
+ mp->bsize = 0;
}
static struct buf *addbuf(struct mpstr *mp,const unsigned char *buf,int size)
diff --git a/dlls/winemp3.acm/mpegl3.c b/dlls/winemp3.acm/mpegl3.c
index e960dbe..3d18c9e 100644
--- a/dlls/winemp3.acm/mpegl3.c
+++ b/dlls/winemp3.acm/mpegl3.c
@@ -163,6 +163,9 @@ static void mp3_horse(PACMDRVSTREAMINSTANCE adsi,
buffered_after = get_num_buffered_bytes(&amd->mp);
TRACE("before %d put %d during %d after %d\n", buffered_before, *nsrc, buffered_during, buffered_after);
+
+ *nsrc -= buffered_after;
+ ClearMP3Buffer(&amd->mp);
}
/***********************************************************************
@@ -376,7 +379,7 @@ static LRESULT MPEG3_FormatSuggest(PACMDRVFORMATSUGGEST adfs)
*/
static void MPEG3_Reset(PACMDRVSTREAMINSTANCE adsi, AcmMpeg3Data* aad)
{
- ExitMP3(&aad->mp);
+ ClearMP3Buffer(&aad->mp);
InitMP3(&aad->mp);
}
@@ -438,7 +441,7 @@ static LRESULT MPEG3_StreamOpen(PACMDRVSTREAMINSTANCE adsi)
*/
static LRESULT MPEG3_StreamClose(PACMDRVSTREAMINSTANCE adsi)
{
- ExitMP3(&((AcmMpeg3Data*)adsi->dwDriver)->mp);
+ ClearMP3Buffer(&((AcmMpeg3Data*)adsi->dwDriver)->mp);
HeapFree(GetProcessHeap(), 0, (void*)adsi->dwDriver);
return MMSYSERR_NOERROR;
}
diff --git a/dlls/winemp3.acm/mpglib.h b/dlls/winemp3.acm/mpglib.h
index 4efe8ae..865e781 100644
--- a/dlls/winemp3.acm/mpglib.h
+++ b/dlls/winemp3.acm/mpglib.h
@@ -62,7 +62,7 @@ extern "C" {
BOOL InitMP3(struct mpstr *mp);
int decodeMP3(struct mpstr *mp,const unsigned char *inmemory,int inmemsize,
unsigned char *outmemory,int outmemsize,int *done);
-void ExitMP3(struct mpstr *mp);
+void ClearMP3Buffer(struct mpstr *mp);
#ifdef __cplusplus
}
More information about the wine-cvs
mailing list