=?UTF-8?Q?J=C3=B6rg=20H=C3=B6hle=20?=: mmdevapi: Avoid HeapRealloc when no data need be copied.
Alexandre Julliard
julliard at winehq.org
Fri Jan 6 15:31:33 CST 2012
Module: wine
Branch: master
Commit: 8316a77959722c9c3cc5fbf69cf9345e1a88979e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8316a77959722c9c3cc5fbf69cf9345e1a88979e
Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date: Thu Jan 5 17:58:21 2012 +0100
mmdevapi: Avoid HeapRealloc when no data need be copied.
---
dlls/winealsa.drv/mmdevdrv.c | 18 ++++++------------
dlls/wineoss.drv/mmdevdrv.c | 17 ++++++-----------
2 files changed, 12 insertions(+), 23 deletions(-)
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index 2557e6e..3168e8f 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -2029,12 +2029,9 @@ static HRESULT WINAPI AudioRenderClient_GetBuffer(IAudioRenderClient *iface,
(This->lcl_offs_frames + This->held_frames) % This->bufsize_frames;
if(write_pos + frames > This->bufsize_frames){
if(This->tmp_buffer_frames < frames){
- if(This->tmp_buffer)
- This->tmp_buffer = HeapReAlloc(GetProcessHeap(), 0,
- This->tmp_buffer, frames * This->fmt->nBlockAlign);
- else
- This->tmp_buffer = HeapAlloc(GetProcessHeap(), 0,
- frames * This->fmt->nBlockAlign);
+ HeapFree(GetProcessHeap(), 0, This->tmp_buffer);
+ This->tmp_buffer = HeapAlloc(GetProcessHeap(), 0,
+ frames * This->fmt->nBlockAlign);
if(!This->tmp_buffer){
LeaveCriticalSection(&This->lock);
return E_OUTOFMEMORY;
@@ -2184,12 +2181,9 @@ static HRESULT WINAPI AudioCaptureClient_GetBuffer(IAudioCaptureClient *iface,
if(This->lcl_offs_frames + *frames > This->bufsize_frames){
UINT32 chunk_bytes, offs_bytes, frames_bytes;
if(This->tmp_buffer_frames < *frames){
- if(This->tmp_buffer)
- This->tmp_buffer = HeapReAlloc(GetProcessHeap(), 0,
- This->tmp_buffer, *frames * This->fmt->nBlockAlign);
- else
- This->tmp_buffer = HeapAlloc(GetProcessHeap(), 0,
- *frames * This->fmt->nBlockAlign);
+ HeapFree(GetProcessHeap(), 0, This->tmp_buffer);
+ This->tmp_buffer = HeapAlloc(GetProcessHeap(), 0,
+ *frames * This->fmt->nBlockAlign);
if(!This->tmp_buffer){
LeaveCriticalSection(&This->lock);
return E_OUTOFMEMORY;
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c
index dbbcd9f..e80385c 100644
--- a/dlls/wineoss.drv/mmdevdrv.c
+++ b/dlls/wineoss.drv/mmdevdrv.c
@@ -1738,12 +1738,9 @@ static HRESULT WINAPI AudioRenderClient_GetBuffer(IAudioRenderClient *iface,
(This->lcl_offs_frames + This->held_frames) % This->bufsize_frames;
if(write_pos + frames > This->bufsize_frames){
if(This->tmp_buffer_frames < frames){
- if(This->tmp_buffer)
- This->tmp_buffer = HeapReAlloc(GetProcessHeap(), 0,
- This->tmp_buffer, frames * This->fmt->nBlockAlign);
- else
- This->tmp_buffer = HeapAlloc(GetProcessHeap(), 0,
- frames * This->fmt->nBlockAlign);
+ HeapFree(GetProcessHeap(), 0, This->tmp_buffer);
+ This->tmp_buffer = HeapAlloc(GetProcessHeap(), 0,
+ frames * This->fmt->nBlockAlign);
if(!This->tmp_buffer){
LeaveCriticalSection(&This->lock);
return E_OUTOFMEMORY;
@@ -1922,11 +1919,9 @@ static HRESULT WINAPI AudioCaptureClient_GetBuffer(IAudioCaptureClient *iface,
UINT32 chunk_bytes, offs_bytes, frames_bytes;
if(This->tmp_buffer_frames < *frames){
if(This->tmp_buffer)
- This->tmp_buffer = HeapReAlloc(GetProcessHeap(), 0,
- This->tmp_buffer, *frames * This->fmt->nBlockAlign);
- else
- This->tmp_buffer = HeapAlloc(GetProcessHeap(), 0,
- *frames * This->fmt->nBlockAlign);
+ HeapFree(GetProcessHeap(), 0, This->tmp_buffer);
+ This->tmp_buffer = HeapAlloc(GetProcessHeap(), 0,
+ *frames * This->fmt->nBlockAlign);
if(!This->tmp_buffer){
LeaveCriticalSection(&This->lock);
return E_OUTOFMEMORY;
More information about the wine-cvs
mailing list